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を抽出する1つの可能な方法は次のとおりです。

$ 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ファイルはトランスコードされません。

Huffmanテーブルが移動されたため、TIFFはJPEGビットストリームの「エンベロープ」ではないため、反対の操作は最初に考えたよりも少し複雑です。

関連情報