gpt4 book ai didi

Java ImageIO : How can I read a BufferedImage from file,以便它使用DataBufferFloat?

转载 作者:行者123 更新时间:2023-12-01 05:57:58 25 4
gpt4 key购买 nike

我需要从文件中读取 BufferedImage,它不使用 DataBufferInt(通常),而是使用 DataBufferFloat

请注意:我不仅仅需要一些独立的 DataBufferFloat,而是真正需要一个带有底层 DataBufferFloatBufferedImage >.

围绕这些事情的 API 非常复杂,我只是找不到如何做到这一点。

请帮忙。

<小时/>

编辑
找出什么不起作用:

DataBufferDouble dbd = new DataBufferDouble(destWidth * destHeight * 4);

// Exception here:
// java.lang.IllegalArgumentException: Unsupported data type 5
WritableRaster wr = WritableRaster.createPackedRaster(
dbd, destWidth, destHeight, 32, new Point(0, 0));

BufferedImage bi = new BufferedImage(ColorModel.getRGBdefault(),
wr, false, (Hashtable<?, ?>) null);

最佳答案

createPackedRaster 不适合于此。它使用 SinglePixelPackedSampleModel 创建一个 Raster,该模型将 r/g/b/a 值存储在 int 内的位字段中,因此其 transferType 只能是整型。

您可能想要一个带有 PixelInterleavedSampleModel 的通用栅格,例如

DataBufferDouble dbd = new DataBufferDouble(destWidth * destHeight * 4);

SampleModel sm = new PixelInterleavedSampleModel(DataBuffer.TYPE_DOUBLE, destWidth, destHeight, 4, destWidth * 4, new int[] {2, 1, 0, 3});

WritableRaster wr = WritableRaster.createWritableRaster(sm, dbd, null);

ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB), true, true, ColorModel.TRANSLUCENT, DataBuffer.TYPE_FLOAT);

BufferedImage bi = new BufferedImage(cm, wr, true, new Hashtable<Object, Object>());

关于Java ImageIO : How can I read a BufferedImage from file,以便它使用DataBufferFloat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2281261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com