Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAI将字节[]保存到.tiff文件_Java_Byte_Tiff_Jai - Fatal编程技术网

Java JAI将字节[]保存到.tiff文件

Java JAI将字节[]保存到.tiff文件,java,byte,tiff,jai,Java,Byte,Tiff,Jai,我试图在Java高级图像API的帮助下,将原始图像数据的一个字节[]保存到硬盘上的.tiff文件中。 网上有一些小例子,但它们并没有真正帮助我,因为它们不符合我的具体问题 我已经设法将字节[]中的数据保存到.raw中,并且可以成功地查看结果,因此源代码实际上包含一些数据。 所讨论的方法是可执行的,没有任何例外,但每当我使用Windows XP ImageViewer查看它时,我得到的只是一个黑色图像 这是我的方法: public void saveTif(byte[] imgData) {

我试图在Java高级图像API的帮助下,将原始图像数据的一个字节[]保存到硬盘上的.tiff文件中。 网上有一些小例子,但它们并没有真正帮助我,因为它们不符合我的具体问题

我已经设法将字节[]中的数据保存到.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);
}
Graphics.drawBytes()
用于在图像上绘制文本(这不是很好,因为它使用byte[],而不是char[]或String,因此不支持字符集)

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


为了获得图像的正确表示,您应该根据像素数据创建一个新的
buffereImage
,或者创建一个匹配的图像并将数据设置到其上。看看
光栅
数据缓冲
类。

哦,是的!谢谢正在删除drawBytes。。。行并添加WritableRaster raster=BuffereImage.getRaster();光栅.setDataElements(0,0,1280,1024,imgData);在两者之间的作品很棒