【发布时间】:2013-11-18 22:51:49
【问题描述】:
正如标题 aleady 所说,它想要创建一个由特定(已经存在的)IntBuffer 支持的 BufferedImage。
到目前为止,我有以下代码:
final IntBuffer buf = ...;
DataBuffer dbuf = new DataBuffer(DataBuffer.TYPE_INT,size) {
public void setElem(int bank, int i, int val) {
buf.put(i,val);
}
public int getElem(int bank, int i) {
return buf.get(i);
}
};
ColorModel cm = ColorModel.getRGBdefault();
SampleModel sm = cm.createCompatibleSampleModel(dim.width,dim.height);
WritableRaster raster = WritableRaster.createWritableRaster(sm,dbuf,null);
BufferedImage img = new BufferedImage(cm,raster,false,new Hashtable<>());
但此代码显示以下错误:
Exception in thread "main" java.awt.image.RasterFormatException: IntegerComponentRasters must haveinteger DataBuffers
at sun.awt.image.IntegerComponentRaster.<init>(Unknown Source)
at sun.awt.image.IntegerInterleavedRaster.<init>(Unknown Source)
at sun.awt.image.IntegerInterleavedRaster.<init>(Unknown Source)
at java.awt.image.Raster.createWritableRaster(Unknown Source)
at test.Test.main(Test.java:100)
(该行是创建 WritableRaster 的行。) 对我来说,不必复制数据非常重要,因为我将主要使用 BufferedImage 作为一个舒适的接口来写入底层 IntBuffer(有一些例外)。
【问题讨论】:
-
你是从其他论坛复制的吗?不要在每一行之后放置
<br>标签。 SO 有自己的格式。 -
我已尝试修复您帖子的格式,但请在发布前阅读任何网站的编辑建议。感谢您今后在这方面的合作。
-
我尝试正确格式化,但我的英语不是最好的。所以关于这个主题的帮助文件让我很困惑。但是,感谢您对其进行格式化。当然,我没有从任何地方复制它,而是通过反复试验自己编程。 (在违反版权法可能要花费数千欧元的时候,复制和粘贴可能不是一个好主意。)
标签: java image bufferedimage