DataBuffer到DataBufferByte抛出抛出错误

时间:2013-11-08 06:57:04

标签: java

我有以下java代码

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

如果图像是BufferedImage类型的对象,我希望将Image转换为DataBufferByte对象,但我的演员会抛出以下错误。

  

java.lang.ClassCastException:java.awt.image.DataBufferInt不能   强制转换为java.awt.image.DataBufferByte

我正在尝试使用此帖Java - get pixel array from image

中的代码

任何想法如何投射或为什么我无法从DataBuffer投射到DataBufferByte

编辑:将Image更改为BufferedImage

2 个答案:

答案 0 :(得分:1)

  

DataBuffer to DataBufferByte cast throws error

查看reference API - 栅格数据不仅可以是字节数。所以我认为这就是你获得例外的原因。

尝试使用BufferedImage属性:

BufferedImage.TYPE_3BYTE_BGR

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

答案 1 :(得分:0)

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

在执行此操作时,您将始终获得类强制转换异常。

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