16位(565)图像读取

3
我现在正在阅读一个图像字节数组,该图像是16位(r:5,g:6,b:5),我想将其读取到BufferedImage中。
我尝试过以下代码:

int[] nBits = {5, 6, 5};
int[] bOffs = {0, 0, 0};
ColorModel colorModel = new ComponentColorModel(
        cs, nBits, false, false,
        Transparency.OPAQUE,
        DataBuffer.TYPE_BYTE);
WritableRaster raster = Raster.createInterleavedRaster(
        new DataBufferByte(screenBuffer,screenBuffer.length),
        foundWidth, foundHight,
        foundWidth * 2, 2,bOffs, null);

BufferedImage imgReconstructed = new BufferedImage(
        colorModel,raster,false,null);


我的问题是关于bandOffsets的设置,对于16位图像应该如何设置?这样做正确吗? 谢谢, Guy
1个回答

1

createInterleavedRaster 方法用于创建一个带有样本模型的图像,其中每个数据元素都包含单个波段(即红色、绿色或蓝色)的颜色信息。如果您想要一个每个 16 位数据元素都包含所有 3 种颜色波段的图像,则应改用其中一种 createPackedRaster 方法。

这些模型支持的唯一十六位数据类型是无符号短整型,因此您需要传递一个 DataBufferUShort 实例。

目前我没有编译器可用来为您编写一个可工作的代码示例,但 SinglePixelPackedSampleModel API 文档将有助于解释扫描线跨度和波段掩码参数。如有需要,我稍后会更新此响应以提供更多细节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接