java - Java中的图像透明度或不透明度问题

标签 java image-processing java-io

我一直在尝试使用java进行一些基本的图像处理(经过很长一段时间的间隔)。

我对原始图像进行的任何操作并将其另存为新图像 -> o/p 图像总是显得暗淡(可能是不透明度或透明度的问题)。

我正在下面粘贴我用来完成这项工作的函数:

//返回模糊的java缓冲图像

public static BufferedImage blurImage(BufferedImage image) 
{
    int w = image.getWidth(); 
    int h = image.getHeight(); 
    int alpha = 0;
    int red, green, blue, newPix;
    int pix[] = null;

    BufferedImage newImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);

    for(int i=0,j=0; i<w; i++) 
    {
        for(j=0; j<h; j++) 
        {
            pix = getSurroundingPixels(image, i>0?i-1:0, i<w-1?i+1:w-1, j>0?j-1:0, j<h-1?j+1:h-1);
            red = green = blue = 0;
            for(int k=0; k<pix.length; k++) 
            {
                red += (pix[k]>>16) & 0xFF;
                green += (pix[k]>>8) & 0xFF;
                blue += (pix[k]) & 0xFF;
            }
            alpha = (image.getRGB(i,j)>>24) & 0xFF;
            red /= pix.length;
            green /= pix.length;
            blue /= pix.length;
            newPix = ((alpha<<24) | (red<<16) | (green<<8) | blue);
            newImage.setRGB(i,j, newPix);
        }
    }

    return newImage;
}

如果有人在这个问题上帮助我,我将不胜感激。

最佳答案

I have now replaced BufferedImage.INT_TYPE_ARGB with BufferedImage.INT_TYPE_RGB, after this, the [processed] image doesn't appear dull, and [it] looks normal. Can you please explain why does this happen?

TYPE_INT_ARGB 有一个DirectColorModel alpha; TYPE_INT_RGB 有一个DirectColorModel 没有 alpha。您的算法缩放 RGB,但克隆 A。据猜测,您的测试图像是不透明的,可能是 .jpg 图像,需要 BufferedImage.TYPE_INT_RGB。您可能想使用此 example 检查您的图像缩放 A 或这个 example该图说明了 setRGB() 完成的颜色转换。

关于java - Java中的图像透明度或不透明度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14747223/

相关文章:

java - 了解 java 中的二进制、字节流和字符

java - 从命令提示符显示 java 程序的输出并将其复制到文件中

javascript - 在 WebView 中注入(inject) Javascript 桥

java - 如果我在 Spring 中运行 Hibernate 请求,为什么会收到 ClassCastException?

java - 不要随机数之前是随机的

java - 循环内声明的变量是否受单次迭代的范围限制?

Java:合并 2 个图像不起作用

java - 从 Java 扫描图像采集硬件

c++ - OpenCV 通过子矩阵改变矩阵

java - 如何在给定的搜索中加载相应的数据