【问题标题】:Convert TIF to JPG without increasing Bit Depth在不增加位深度的情况下将 TIF 转换为 JPG
【发布时间】:2014-03-27 18:46:07
【问题描述】:

我正在尝试将 TIF 图像转换为 JPG 图像。为此,我使用以下代码:

    SeekableStream s = new FileSeekableStream(tiffUrl);
    TIFFDecodeParam param = null;
    ImageDecoder dec = ImageCodec.createImageDecoder(EXT_TIFFX, s, param);
    RenderedImage op = dec.decodeAsRenderedImage(0);
    FileOutputStream fos = new FileOutputStream(jpgUrl);
    JPEGEncodeParam jpgparam = new JPEGEncodeParam();
    jpgparam.setQuality(quality);               
    ImageEncoder en = ImageCodec.createImageEncoder(EXT_JEPGX, fos, jpgparam);
    en.encode(op);
    fos.flush();
    fos.close();
    s.close();

在转换之前,我的图像大小约为 92KB,位深度 = 1 转换后,我的新 jpg 图像大小约为 1573KB,位深度 = 24

我需要管理小于 100KB 的新图像。我想如果我将位深度控制为 1 本身就可以做到这一点。

是否有任何解决方案有助于执行此操作?

【问题讨论】:

  • 见libnetpbm,还有一些命令行工具(netpbm)。我假设他们可以做到(如果 jfif (.jpeg) 支持 1 位像素)
  • 将图像大小保持在 100 KB 以下的一种简单方法是不要管它。 JPEG 压缩不支持 1 位像素深度,对这种图像无用。
  • @squeamishossifrage 说了什么。 :-) TIFF 有几种优化的无损压缩算法,适用于 1 位/像素数据。对于 JPEG,您可以使用灰度,但它会导致 8 位/像素(并且是有损的)。 JBIG 会更合适。
  • 如果您的像素是 1 位深,那么您为什么要尝试 JPEG 压缩?这种压缩基于平滑小的颜色变化。这里只有 2 种颜色,没有小的颜色变化。

标签: java image image-processing type-conversion


【解决方案1】:

恕我直言,您应该使用 Apache Commons Imaging,因为它是一种先进且完整的成像解决方案。我用它来将Tiff 图像写入 PDF。有很多examples。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 2019-01-12
    • 2011-10-18
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    相关资源
    最近更新 更多