我有以下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
答案 0 :(得分:1)
DataBuffer to DataBufferByte cast throws error
查看reference API - 栅格数据不仅可以是字节数。所以我认为这就是你获得例外的原因。
尝试使用BufferedImage
属性:
BufferedImage.TYPE_3BYTE_BGR
这应该修复它,并且栅格数据应该作为字节返回。
答案 1 :(得分:0)
DataBuffer是DataBufferByte类的超类,因此您无法将超类对象的ref分配给子类对象
在执行此操作时,您将始终获得类强制转换异常。