0

我有以下java代码

final byte[] pixels;
DataBuffer rasterData = image.getRaster().getDataBuffer();
DataBufferByte rasterByteData = (DataBufferByte)rasterData;
pixels = rasterByteData.getData();

其中 image 是 type 的对象BufferedImage,我希望将其转换ImageDataBufferByte对象,但我的演员抛出以下错误。

java.lang.ClassCastException:java.awt.image.DataBufferInt 无法转换为 java.awt.image.DataBufferByte

我正在尝试使用这篇文章Java 中的代码 - 从图像中获取像素数组

任何想法如何投射或为什么我不能从DataBufferto投射DataBufferByte

编辑:更改ImageBufferedImage

4

2 回答 2

1

DataBuffer 到 DataBufferByte 转换引发错误

查看参考 API - 光栅数据可以是任何东西,而不仅仅是字节。所以我认为这就是你得到异常的原因。

尝试用于您的BufferedImage财产:

BufferedImage.TYPE_3BYTE_BGR

这应该修复它,并且光栅数据应该作为字节返回。

于 2013-11-08T07:10:28.250 回答
0

DataBuffer 是 DataBufferByte 类的超类,因此您不能将超类对象的 ref 分配给子类对象

这样做时你总是会得到类转换异常。

http://edelstein.pebbles.cs.cmu.edu/jadeite/main.php?api=java6&state=class&package=java.awt.image&class=DataBufferByte

于 2013-11-08T11:32:17.493 回答