简单地说,我有一个图像的光栅,我想制作它的 BufferedImage
。
Raster raster = someObject.getAsRaster();
BufferedImage bi = ?
如何使用合适的 ColorModel
制作 BufferedImage
以便正确显示图像?
最佳答案
合适的ColorModel
可能取决于栅格中的像素数据。以下是一些常见的变体:
如果栅格包含
byte
(8 位)或ushort
(16 位)格式的交错或带状样本,则为ComponentColorModel
会起作用。您需要指定数据类型、颜色空间以及数据是否包含 Alpha 以及 Alpha 是否预乘。如果栅格采用“打包”格式,则通常需要
DirectColorModel
。同样,您需要了解有关光栅的详细信息才能使颜色正确。如果栅格包含表示查找表索引的单个组件,您将需要一个具有正确查找表的
IndexColorModel
。
这里没有“一刀切”的解决方案,但代码看起来像这样:
Raster raster = ...; // Your raster
ColorModel colorModel = ...; // A suitable color model (see above)
WritableRaster writableRaster = raster.createCompatibleWritableRaster();
writableRaster.setDataElements(0, 0, raster);
BufferedImage image = new BufferedImage(colorModel, writableRaster, colorModel.isAlphaPremultiplied(), null);
关于java - 从光栅创建 BufferedImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18102054/