但是,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.
解决方法
当使用每通道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).您应该选择平台的本机,以便减少转换.