java - 改变java中透明像素的颜色

标签 java image-processing

现在我可以将另一个图像的像素应用于 pg 到 m 的源图像像素。但问题是我失去了渐变或褪色效果。

     public static void main(String[] args){
        try {
            BufferedImage image = ImageIO.read(new File("c:\\m.png"));
            BufferedImage patt = ImageIO.read(new File("c:\\pg.png"));

            int f = 0;
            int t = 0;
            int n = 0;
            BufferedImage bff = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB);
            for (int y = 0; y < image.getHeight(); ++y) {
                for (int x = 0; x < image.getWidth(); ++x) {
                    int argb = image.getRGB(x, y);
                    int nrg = patt.getRGB(x, y);

                    if(((argb>>24) & 0xff) == 0) {
                                bff.setRGB(x, y, (255<<24));
                    } else {
                                bff.setRGB(x, y, nrg);
                    }                               
                }
            }
            System.out.println("Trans : " + t + " Normal : " + n);
            File outputfile = new File("c://imagetest.png");
            ImageIO.write(bff, "png", outputfile);
        } catch (IOException ex) {

        }

}

谢谢。

最佳答案

0xff000000 是不透明的黑色,0x00000000 是完全透明的。

0(您选择的颜色)是什么?

是的,它是透明的。

尝试 0xff000000 甚至更好:argb ^ 0xff000000,它只是改变透明度。

                if(((argb>>24) & 0xff) == 0) {
                            bff.setRGB(x, y, argb ^ 0xff000000);
                } else {
                            bff.setRGB(x, y, argb);
                }                               

关于java - 改变java中透明像素的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21136056/

相关文章:

给定类型不能应用 Java 构造函数

java - GridBagLayout 创建非常小的面板

html - 上传前显示图片预览

python - 使用 Python 自动裁剪图像以提取内部黑色边框 ROI

java - 在 Java 中通过 ref 传递枚举

java事件和监听器,一个类中的多个事件

java - 如何测试请求是否增加指标而在 Vert.x 中没有得到任何响应?

java - 如何在Android Activity中调用Jni对象?

java - 如何在java中处理tesserac的图像?

python - 检测和隔离绿色网球 table 板上的线条