【问题标题】:Write a .TIFF with JAI使用 JAI 编写 .TIFF
【发布时间】:2015-05-19 08:29:02
【问题描述】:

我是一名 Java 初学者,也是一名地学专业的学生。 我正在使用 IntelliJ。 我想从 BufferedImage 创建一个 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/builds/release/1_1_3/ 我将它上传到我的项目和 Maven 上,但我不知道如何简单地制作一个 tiff...我尝试了一些我在互联网上找到的 sn-ps,但它不起作用..

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

“TIFFEncodeParam”和“媒体”无法识别……而且我是个真正的编程菜鸟……

谢谢

【问题讨论】:

    标签: java maven tiff jai


    【解决方案1】:

    首先,JAI 带有一组 ImageIO 插件,可让您使用ImageIO.write 以 TIFF 格式写入。但它要求jai_imageio.jar 在类路径上。我猜这是你缺少的 JAR。

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

    但是,正如您从问题中的下载链接中看到的那样,JAI 是一个几乎已死的项目(最新更新来自 2006 年)。

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

    您可以阅读它,尤其是在项目主页上的TIFF plugin。页面再往下一点是下载链接、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.");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多