1

私は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;
}

この問題について誰かが私を助けてくれれば幸いです。

4

1 に答える 1

2

に差し替えましBufferedImage.INT_TYPE_ARGBたがBufferedImage.INT_TYPE_RGB、この後は【加工済】の画像がくすんで見えず、【普通】に見えます。なぜこれが起こるのか説明していただけますか?

TYPE_INT_ARGBアルファ付きですDirectColorModel TYPE_INT_RGBはアルファDirectColorModel なしです。アルゴリズムは をスケーリングしますRGBが、クローンを作成しAます。推測では、テスト画像は不透明で、.jpg画像である可能性があり、 BufferedImage.TYPE_INT_RGB. スケーリングするこのまたはによって行われる色変換を示すこのを使用して、イメージを調べることができます。AsetRGB()

于 2013-02-08T08:57:21.640 に答える