在 TIFF 容器内混合 JPEG 位流?

在 TIFF 容器内混合 JPEG 位流?

在我的 Linux 系统 (Debian) 上,我可以解码 JPEG,然后将其重新编码为 TIFF使用:

% ffmpeg -i input.jpeg -pix_fmt rgba output.tiff

或者甚至使用 libtiff-tools:

% convert -size 256x256 -depth 8 xc:white white.ppm
% ppm2tiff white.ppm white.tiff
% tiffcp -c jpeg white.tiff white.jpg.tiff

tiffcpJPEG 压缩(有损过程)在操作期间在内部完成。

但我想做无损的从 JPEG 混合到 TIFF 容器/格式(反之亦然:从输入 TIFF/JPEG 文件中提取 JPEG 比特流)。我可以使用 ffmpeg 或其他 UNIX 命令行工具来做到这一点吗?例如我可以将 JPEG 混合到 M-JPEG无损地:

% ffmpeg -framerate 30 -i input%03d.jpg -codec copy output.mjpeg

作为参考,这里是一个典型的 TIFF/JPEG,如何从中提取原始 JPEG 双流?

% tiffinfo white.jpg.tiff
TIFF Directory at offset 0x430 (1072)
  Image Width: 256 Image Length: 256
  Bits/Sample: 8
  Compression Scheme: JPEG
  Photometric Interpretation: YCbCr
  Orientation: row 0 top, col 0 lhs
  Samples/Pixel: 3
  Rows/Strip: 256
  Planar Configuration: single image plane
  Reference Black/White:
     0:     0   255
     1:   128   255
     2:   128   255
  JPEG Tables: (574 bytes)

答案1

从 TIFF 中提取 JPEG 的一种可能方法如下:

$ tiff2pdf -o white.jpg.tiff.pdf  white.jpg.tiff 
$ pdfimages -all white.jpg.tiff.pdf root
$ file root-000.jpg
root-000.jpg: JPEG image data

由于 tiff2pdf 手册页指出:

如果输入的 TIFF 包含 JPEG 或单条 Zip/Deflate 压缩信息,并且配置了它们,则将不转码写入 PDF 文件,除非设置了不压缩和不直通选项。

相反的操作比我最初想象的稍微复杂一些,因为 TIFF 不仅仅是 JPEG 比特流的“信封”,因为霍夫曼表已经移动了:

相关内容