【问题标题】:Image transparency or opacity issue in JavaJava中的图像透明度或不透明度问题
【发布时间】:2013-01-22 17:20:45
【问题描述】:

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

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

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

//返回一个模糊的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;
}

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

【问题讨论】:

  • 试试ConvolveOp,如引用here的文章所示。
  • 我一定会尝试 ConvolveOp,但我的意图不是使用替代方案。我想弄清楚这里出了什么问题。事实上,我已经编写了类似的函数,如旋转、镜像函数。甚至那些都返回了一个 DULL 图像。
  • 请编辑您的问题以包含sscce,该sscce 使用自包含或其他可访问的图像展示您描述的问题。
  • 引用了一些相关的例子here
  • 在上面的函数中我已经粘贴了。我现在已将 BufferedImage.INT_TYPE_ARGB 替换为 BufferedImage.INT_TYPE_RGB ,此后 o/p 图像不会显得暗淡且看起来很正常。你能解释一下为什么会这样吗?

标签: java image-processing java-io


【解决方案1】:

我现在用BufferedImage.INT_TYPE_RGB替换了BufferedImage.INT_TYPE_ARGB,在这之后,[处理后的]图像不会显得暗淡,[它]看起来很正常。你能解释一下为什么会这样吗?

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

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 2012-03-25
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2011-02-07
    相关资源
    最近更新 更多