【问题标题】:Open or manipulate Jpeg2000 compressed Tiff打开或操作 Jpeg2000 压缩的 Tiff
【发布时间】:2019-06-23 22:18:33
【问题描述】:

我正在构建一个应用程序来处理单页 tif(f) 文件并使用 PDFSharp 将它们批量转换为 pdf。遇到某些文件将在其中打开或处理但仅作为黑页的问题。似乎仅限于灰度或彩色图像。我知道它们没有损坏,因为它们在第三方 ISV 应用程序中打开。然而,它们似乎是使用一种非常晦涩的算法压缩的。到目前为止,我已经尝试过 - 并且失败了 - 打开它们:

  1. 每个内置的 windows 图像查看器
  2. IfranViewer
  3. ImageMagick
  4. Faststone
  5. 照相馆

当我运行 ImageMagick Identify 命令时,我得到以下信息:

确定:不支持压缩

到目前为止,我能找到的唯一可以打开它们的是Brava!Desktop。然而,这是一个商业应用程序,似乎不需要命令来自动化这个转换过程——这正是我所需要的。

有谁知道这是什么格式,或者我将如何在 .net 中正确呈现它。

编辑

额外的 EXIFTOOL 信息 exiftool.exe Black.tif -v 5 也感谢 fmw42 让我注意到该工具!:

| 0)  SubfileType = 2
| 1)  ImageWidth = 2534
| 2)  ImageHeight = 3323
| 3)  BitsPerSample = 8 8 8
| 4)  Compression = 34712
| 5)  PhotometricInterpretation = 2
| 6)  StripOffsets = 228
| 7)  Orientation = 1
| 8)  SamplesPerPixel = 3
| 9)  RowsPerStrip = 3323
| 10) StripByteCounts = 11742587
| 11) XResolution = 300 (300/1)
| 12) YResolution = 300 (300/1)
| 13) PlanarConfiguration = 1
| 14) ResolutionUnit = 2
| 15) PageNumber = 0 0

【问题讨论】:

  • 一些 tif 文件是用许多工具不支持的旧 JPG 压缩方式压缩的。它也可以是自定义压缩。使用 EXIFTOOL,我得到了 259 Compression : 34712,它似乎没有在 awaresystems.be/imaging/tiff/tifftags/compression.html 中列出。什么工具创建了 TIFF 文件?创建压缩时是否可以选择更改压缩。
  • 我注意到 Photoshop 也不会打开它。
  • 即使是JPG2000压缩的,也不知道有什么工具可以解压TIF甚至打开它。 JPG2000 是一种更先进的无损压缩格式。但是 TIF 是如此开放,任何人都可以修改它,并且没有真正的标准可以进行所有可能的定制。因此,目前可能很少有工具会打开/解压缩 TIFF。如果它是一个标准的 JPG2000 文件,有工具可以处理它。请参阅 OpenJPEG 文档,它是一种创建和读取 JP2000 格式的工具。这可能会有所帮助。 openjpeg.org
  • 咨询 libtif 开发人员。 Imagemagick 使用 libtif。看看有没有支持JP2000压缩的新版本。
  • @cgohlke done 我以为我放的只是一张空白的面片,但我无法打开并验证查看

标签: .net image image-processing


【解决方案1】:

尝试(使用 Python):

  1. tifffile,安装imagecodecs,可以将图像读入一个numpy数组,然后可以进一步处理:

    from matplotlib import pyplot
    import tifffile
    im = tifffile.imread('black.tif')
    pyplot.imshow(im)
    pyplot.show()
    
  2. 以二进制模式打开文件,寻找StripOffsets,读取StripByteCounts字节,并将缓冲区写入.jp2文件,可以用IrfanView等打开:

    with open('black.tif', 'rb') as fh:
        fh.seek(228)
        im = fh.read(11742587)
    with open('black.jp2', 'wb') as fh:
        fh.write(im)
    

【讨论】:

  • 等我回到电脑前试试这个谢谢
  • 您好,感谢您的解决方案!这一直是一个痛苦,但要弄清楚。快速提问 python 不是我的主要语言之一。是否可以保存为 jpeg 或者我必须使用另一个库?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多