java - 从光栅创建 BufferedImage

标签 java image bufferedimage raster

简单地说,我有一个图像的光栅,我想制作它的 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/

相关文章:

关于时钟的javascript和java

c++ - 如何检测图片中的 window 或门?

c# - 从sql数据库检索图像(字节数组)并显示图像

java - 将多个 BufferedImages 添加到组件以进行拖动

java - 从鼠标 X 和 Y 位置的 bufferedImage 获取像素 RGB

Java : How to resize buffered image in pixels?

java - 递归java - 不同的是for循环不理解如何工作

java - 在外部使用 Tomcat 从 IntelliJ 运行 Web 应用程序时,发送到 System.err 的消息去哪里了?

java - 流多个过滤器内部

javascript - 从 Base64 编码的图像中获取尺寸