lisong 发表于 2019-9-13 03:03

为什么 读取 JPG 文件会出现问题

本帖最后由 lisong 于 2019-9-13 03:15 编辑

获取JPG文件的像素点的颜色代码,为什么会与文件本身颜色代码不一样?
为什么获取PNG文件的颜色代码就是正常的?
              public void test() throws Exception {

                // String filepath = "E:\\图片\\PNG.PNG";
                String filepath = "E:\\图片\\JPG.jpg";
                BufferedImage im = ImageIO.read(new File(filepath));
                int[] px = new int;
                PixelGrabber pg = new PixelGrabber(im, im.getMinX(), im.getMinY(), im.getWidth(), im.getHeight(), px, 0,
                                im.getWidth());
                pg.grabPixels();
                List<Integer> li = new ArrayList<Integer>();
                for (int p : px) {
                        if (li.indexOf(p) == -1) {
                                li.add(p);
                        }
                }
                for (int p : li) {
                        // 输出颜色代码
                        System.out.println(p);
                }
                System.out.format("一共有 %s 种不同的颜色", li.size());
        }

这两张图片只有两种颜色
为什么 获取 jpg 文件 像素点中的颜色代码时 颜色代码中会出现很多种 不应该只有两种吗
获取 PNG 文件时就正常 只有两种颜色代码
   

blindcat 发表于 2019-9-13 07:16

JPG是有损压缩算法(虽然图片只有两色,在压缩时引入的杂色,你仔细看图片中两色过度的部分),PNG是无损压缩。

董志刚 发表于 2019-9-13 07:27

感谢   又学到知识了

asiafox 发表于 2019-9-13 07:39

非常感谢楼主您的分享撒~
页: [1]
查看完整版本: 为什么 读取 JPG 文件会出现问题