BufferedImage保存jgeg图像的问题

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

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位整型,取出其各个的分量的方法如下:

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)