java修改图片像素的颜色出现锯齿

发布于 2022-09-01 16:54:43 字数 1657 浏览 15 评论 0

int[] rgb = new int[3];

         BufferedImage bi = (BufferedImage) ImageIO.read(new File("d:/24.png"));
         
         
            // 获取图像的宽度和高度
            int width = bi.getWidth();
            int height = bi.getHeight();
            boolean isTransparent = true;
            // 扫描图片
            for (int i = 0; i < height; i++) {
                for (int j = 0; j < width; j++) {// 行扫描
                    int dip = bi.getRGB(j, i);
                    rgb[0] = (dip & 0xff0000) >> 16;  
                    rgb[1] = (dip & 0xff00) >> 8;  
                    rgb[2] = (dip & 0xff);  
                    System.out.println("dip:"+dip+" "+rgb[0]+" "+rgb[1]+" "+rgb[2]+" "+convertRGBToHex(rgb[0],rgb[1],rgb[2]));
                    if(rgb[0]==26&&rgb[1]==216&&rgb[2]==0){
                        bi.setRGB(j, i, -65281);
                    }
                 
                }
                
                if(i==50)break;
            }
          

            BufferedImage target = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);                
            Graphics2D g2d = (Graphics2D)target.getGraphics();
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
           
            g2d.drawImage(bi.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
            
            g2d.dispose(); 
            ImageIO.write(target, "png", new File("d:/24_2.png"));
           

用图片修改图片里固定像素的颜色,如把图片里的绿色改成粉丝。然后创建一张新的图片,这时候新的图片就会出现锯齿。有朋友知道如何去解决吗? 代码了用了Graphics2D 的方式去去除图片的锯齿但是还是没效果

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别把无礼当个性 2022-09-08 16:54:43

这几个类不熟,从前端角度看,你看看是不是png格式的问题,因为一般颜色信息的rgb表示是24位,而png最高支持32位,多出的8位是用来表示透明度的,一般同一个psd另存gif就容易有锯齿,而png则不会,就是因为有半透明的颜色

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文