short[]
で表される生のグレースケール画像ピクセルがあります。 BufferedImage
を作成してPNG形式で保存したいと思います。これまでのところカスタムBufferedImageの保存
short[] myRawImageData;
// Create signed 16 bit data buffer, and compatible sample model
DataBuffer dataBuffer = new DataBufferShort(myRawImageData, w * h);
SampleModel sampleModel = new ComponentSampleModel(DataBuffer.TYPE_SHORT, w, h, 1, w, new int[] {0});
// Create a raster from sample model and data buffer
WritableRaster raster = Raster.createWritableRaster(sampleModel, dataBuffer, null);
// Create a 16 bit signed gray color model
ColorSpace colorSpace = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorModel colorModel = new ComponentColorModel(colorSpace, false, false, Transparency.OPAQUE, DataBuffer.TYPE_SHORT);
// Finally create the signed 16 bit image
BufferedImage image = new BufferedImage(colorModel, raster, colorModel.isAlphaPremultiplied(), null);
try (FileOutputStream fos = new FileOutputStream("/tmp/tst.png")) {
ImageIO.write(image, "png", fos);// <--- Here goes the exception
} catch (Exception ex) {
ex.printStackTrace();
}
とても良いが、私は、私はArrayIndexOutOfBoundsException
を取得していPNG
として保存するImageIO.write
を使用しようとしているとき:なしTYPE_SHORT_GRAY
私は自分自身をこのように1を作成していBufferedImage
のために定義が存在しないので 。
a)あなたの問題を[MCVE]として示すコードを投稿し、b)何が起こるか、起こりそうなこと、それらがどのように異なっているか、そして特定のエラーが発生したことを説明する必要があります。 – pvg