加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何决定使用哪种BufferedImage图像类型?

发布时间:2020-12-14 05:58:05 所属栏目:Java 来源:网络整理
导读:Java BufferedImage类有一长串类变量,称为图像类型,可用作BufferedImage构造函数的参数. 但是,Java文档对这些图像类型的用途做了最小的解释,它将如何影响要创建的BufferedImage. 我的问题是: 图像类型如何影响要创建的BufferedImage?它是否控制用于存储各
Java BufferedImage类有一长串类变量,称为图像类型,可用作BufferedImage构造函数的参数.

但是,Java文档对这些图像类型的用途做了最小的解释,它将如何影响要创建的BufferedImage.

我的问题是:

>图像类型如何影响要创建的BufferedImage?它是否控制用于存储各种颜色(红色,绿色,蓝色)的位数及其透明度?
>如果我们只想创建,我们应该使用哪种图像类型

>不透明的图像
>透明的图像
>半透明的图像

我多次阅读Java Doc中的描述,但是我们不知道应该如何使用它.例如,这一个:

TYPE_INT_BGR

Represents an image with 8-bit RGB color components,corresponding to a Windows- or Solaris- style BGR color model,with the colors Blue,Green,and Red packed into integer pixels. There is no alpha. The image has a DirectColorModel. When data with non-opaque alpha is stored in an image of this type,the color data must be adjusted to a non-premultiplied form and the alpha discarded,as described in the AlphaComposite documentation.

解决方法

除非您有特定要求(例如保存内存或保存计算或特定的原生像素格式),否则请使用默认的TYPE_INT_ARGB,每个通道有8位,3个通道alpha.

当使用每通道8位时跳过alpha通道不会影响图像占用的总内存,因为在任何情况下每个像素都将被打包为int,因此将丢弃8位.

基本上你有:

> TYPE_INT_ARGB,每个像素4个字节,带alpha通道
> TYPE_INT_ARGB_PRE,每像素4个字节,与之前相同,但颜色已经乘以像素的alpha值以节省计算
> TYPE_INT_RGB,没有alpha通道
> TYPE_USHORT_555_RGB和TYPE_USHORT_565_RGB,每个像素2个字节,颜色少得多,除非你有内存限制,否则不需要使用它

然后有所有相同类型的格式与交换通道(例如BGR而不是RGB).您应该选择平台的本机,以便减少转换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读