JAI将byte []保存到.tiff文件

时间:2013-06-10 10:56:18

标签: java byte tiff jai

我正在尝试借助Java Advanced Imaging API将原始图像数据的byte []保存到硬盘上的.tiff文件中。 网上有一些小例子,但它们对我没有帮助,因为它们与我的确切问题不符。

我已经设法将byte []中的数据保存到.raw中,并且可以成功查看结果,因此源实际上包含一些数据。 有问题的方法是可执行的,没有任何例外,但每当我使用Windows XP ImageViewer查看时,我得到的都是黑色图像。

这是我的方法:

public void saveTif(byte[] imgData) {
    BufferedImage bufferedImage = new BufferedImage( 1280, 1024, BufferedImage.TYPE_BYTE_GRAY );
    bufferedImage.createGraphics().drawBytes(imgData, 0, 1280*1024, 0, 0);

    TIFFEncodeParam params = new TIFFEncodeParam();
    params.setCompression( TIFFEncodeParam.COMPRESSION_NONE );
    String filenametiff = path + File.separatorChar + new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss'.tiff'").format(new Date());
    JAI.create("filestore", bufferedImage, filenametiff, "TIFF", params);
}

1 个答案:

答案 0 :(得分:1)

Graphics.drawBytes()用于绘制文本(并且它不是很好,因为它使用byte [],而不是char []或String,因此不支持charsets)到图像上。

Graphics.drawBytes()不能用于绘制原始像素。

要获得图像的正确表示,您应该从像素数据中创建新的BufferedImage,或者创建匹配的图像并将数据设置到其上。查看RasterDataBuffer类。