Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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的口角_Java_Maven_Tiff_Jai - Fatal编程技术网

Java 写一篇与JAI的口角

Java 写一篇与JAI的口角,java,maven,tiff,jai,Java,Maven,Tiff,Jai,我是Java的初学者,也是一名地理信息学的学生。 我在用IntelliJ。 我想从BuffereImage创建TIFF。 这是我的代码: byte[] buffer = new byte[width * height]; ColorSpace cs = ColorSpace.getInstance( ColorSpace.CS_GRAY ); int[] nBits = { 8 }; ColorModel cm = new ComponentColorModel(

我是Java的初学者,也是一名地理信息学的学生。 我在用IntelliJ。 我想从BuffereImage创建TIFF。 这是我的代码:

    byte[] buffer = new byte[width * height];
    ColorSpace cs = ColorSpace.getInstance( ColorSpace.CS_GRAY );
    int[] nBits = { 8 };
    ColorModel cm = new ComponentColorModel( cs, nBits, false, true,Transparency.OPAQUE, DataBuffer.TYPE_BYTE );
    SampleModel sm = cm.createCompatibleSampleModel( width, height );
    DataBufferByte db = new DataBufferByte( buffer, width * height );
    WritableRaster raster = Raster.createWritableRaster( sm, db, null);
    BufferedImage result = new BufferedImage( cm, raster, false , null );
    File outputfile = new File( "saved.png" );
    ImageIO.write( result, "png", outputfile );
创建了一个光栅.png,效果很好。但是我想创建一个.TIFF和ImageIO.write,但不创建TIFF(仅png、bmp和jpeg)。因此,我在这里下载JAI(Java高级图像): 我把它上传到我的项目和Maven上,但我不知道如何简单地进行争吵。。。我尝试了一些在互联网上找到的代码片段,但不起作用

        TIFFEncodeParam params = new TIFFEncodeParam();
        FileOutputStream os = new FileOutputStream("PingsTiff.tiff");
        javax.media.jai.JAI.create("encode", result, os, "TIFF", params);
“TIFFEncodeParam”和“media”是不被认可的…而且我在编程方面真的是个笨蛋


谢谢

首先,JAI附带了一套ImageIO插件,允许您使用
ImageIO.write
以TIFF格式写入。但是它需要
jai_imageio.jar
在类路径上。我猜这就是你丢失的罐子

此外,如果导入和依赖项设置正确,那么发布的代码应该可以工作。这有点棘手,因为JAI的某些部分需要本地库,这些库需要使用安装程序和正确的JRE等进行安装。因此,它并不完全适合Maven(尽管确实可行)

然而,正如你在问题中的下载链接所看到的,JAI是一个相当死气沉沉的项目(最新的更新是从2006年开始的)

由于缺乏更新、bug修复和支持,以及本机部件和许可证问题,我建立了一个开源项目,旨在提供至少与JAI一样好的文件格式支持,没有本机要求,并在BSD许可证下发布

您可以在项目主页上阅读有关它的信息,尤其是项目的详细信息。再往下一点就是下载链接、Maven依赖信息等

当您声明对TIFF插件的依赖关系后,您应该能够使用普通的
ImageIO
编写TIFF,如下所示:

File outputfile = new File("saved.tif");

if (!ImageIO.write(result, "TIFF", outputfile)) {
    // Beware, write is a boolean method, that returns success!
    System.err.println("Could not write " + outputfile.getAbsolutePath() + " in TIFF format.");
}