关于 BufferedImage保存jgeg图像的问题


在保存图像上遇到的遇到的一个问题:

[java]

m_Img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);  

int pixel = 0xFFFF0000;  

for(int i = 0; i < width; i++)  

    for(int j = 0; j < height; j++)  

    { m_Img.setRGB(i, j, pixel); }  

        try{  

    ImageIO.write(m_Img, "JPEG", new File(fileName));  

}  

catch(IOException e) {  

    e.printStackTrace();  

}  

发现保存的结果颜色不对,然后在颜色分量的组织上调试了半天,后来才知道原来jpeg图像不支持alpha通道造成得这种异常情况,于是乎,在创建BufferedImage中图像类型由BufferedImage.TYPE_INT_ARGB改成BufferedImage.TYPE_INT_RGB就正常显示了。不知道为何该类本身不做这种判断。。

另外通过BufferedImage.getRGB()取回的像素值为32位整型,取出其各个的分量的方法如下:

[java]

public int GetAlphaOfPixel(int pixel){  

    return (pixel & 0xFF000000) >> 24;  

}  

public int GetRedOfPixel(int pixel){  

    return (pixel & 0x00FF0000) >> 16;  

}  

public int GetGreenOfPixel(int pixel){  

    return (pixel & 0x0000FF00) >> 8;  

}  

public int GetBlueOfPixel(int pixel){  

    return (pixel & 0x000000FF);  

}  

当然,BufferedImage.setRGB的方法也类似。


你可能感兴趣的:(java)