用Jai写一个.Tiff



我是Java的初学者,是Geomatics学生。我正在使用Intellij。我想从一个缓冲图中创建一个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 Advanced Imaging):http://download.java.net/media/jai/jai/builds/release/1_1_3/我将其上传到我的项目和Maven上,但我不知道如何简单地制作tiff ...我尝试了一些我在互联网上找到的摘要,但它不起作用。

        TIFFEncodeParam params = new TIFFEncodeParam();
        FileOutputStream os = new FileOutputStream("PingsTiff.tiff");
        javax.media.jai.JAI.create("encode", result, os, "TIFF", params);

" tiffencodeparam"one_answers"媒体"没有认可...我是编程中的真正菜鸟。

谢谢

首先,jai配备了一组Imageio插件,可让您使用ImageIO.write以TIFF格式写入。但是它要求jai_imageio.jar在课堂路径上。我想这是您缺少的罐子。

另外,如果您正确设置了导入和依赖关系,则您发布的代码应该有效。这有点棘手,因为Jai的某些部分需要使用安装程序以及正确的JRE等安装本机库,等等。因此,它与Maven并不完全合适(尽管肯定可行)。

>

但是,正如您从问题中的下载链接中看到的那样,Jai是一个差不多的项目(最新更新是从2006年起)。

由于缺乏更新,错误修复和支持以及本地零件和许可问题,我设置了一个开源项目,旨在提供至少与JAI一样良好的文件格式,而没有本机要求并根据BSD许可发布。

您可以在项目主页上阅读有关它的信息,尤其是TIFF插件。页面下降的进一步是下载链接,maven依赖信息等。

当您声明对Tiff插件的依赖时,您应该能够使用Plain 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.");
}

最新更新