关于 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的方法也类似。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值