LoginSignup
0
1

More than 3 years have passed since last update.

【jpegtran】 出来る!ベースラインJPEG ⇔ プログレッシブJPEGのロスレス変換

Last updated at Posted at 2021-02-26

さよならプログレッシブJPEG。ようこそベースラインJPEG。

ロスレス変換

実行環境

  • Windows 10 Pro (x64)
  • jpegtran (Version 9d 12-Jan-2020)

Windowsバイナリ

※ 今回は jpegclub 版の jpegtran を使ってまいす。

※ (2021/03/30) jpegclub 版と mozjpeg 版で jpegtran でのコマンド オプションが異なるので、追記。

コマンド

jpegclub 版の jpegtran

command
@REM プログレッシブJPEGをベースラインJPEGへ変換。
@REM 特別オプションがない場合はベースラインJPEGが出力される。
jpegtan.exe -outfile baseline.jpg progressive.jpg

@REM ベースラインJPEGをログレッシブJPEGへ変換。
@REM -progressive オプションをつける
jpegtan.exe -progressive -outfile progressive.jpg baseline.jpg

mozjpeg 版の jpegtran

jpegclub 版の jpegtran とデフォルトが逆なので注意

command
@REM プログレッシブJPEGをベースラインJPEGへ変換。
@REM mozjpeg版のデフォルトはログレッシブのため、
@REM -revert オプションを付ける。
jpegtan.exe -revert -outfile baseline.jpg progressive.jpg

@REM 標準入出力も使えます
jpegtan.exe -revert < progressive.jpg > baseline.jpg 

@REM ベースラインJPEGをログレッシブJPEGへ変換。
@REM mozjpeg版のデフォルトはログレッシブのため、
@REM 指定無しでベースログレッシブJPEGが出力される。
jpegtan.exe -outfile progressive.jpg baseline.jpg

@REM mozjpeg版では標準入出力も使えます。
jpegtan.exe < baseline.jpg > progressive.jpg

検証

利用ツール

  • Photoshop CC 2021 x64 の WEB用に保存 (従来)
  • WinMerge x64 v2.16.8.1
  • IrfanView x64 v4.51

検証⓪ 一般ツールによるロッシー変換検証👎 (ただの書き出し直し)

手順

  1. PhotoshopプログレッシブJPEG を作る。
    sample.jpg
  2. PhotoshopプログレッシブJPEG から ベースラインJPEG を作る。
    sample.jpgbaseline.jpg
  3. PhotoshopベースラインJPEG から プログレッシブJPEG を作る。
    baseline.jpgprogressive.jpg
  4. WinMerge で比較する。
  5. Irfanvie で情報を比較する。

結果

1.PhotoshopでプログレッシブJPEGを作る

sample.jpg
sample.jpg
※ pixivでは年齢制限がかかっているのでモザイク処理

2. PhotoshopでプログレッシブJPEGからベースラインJPEGを作る。

katuai

3. PhotoshopでベースラインJPEGからプログレッシブJPEGを作る。

katuai

4. WinMergeで比較する

沢山差異が出てくる。比較方法としては上々。
ぱっと見わかんないのでサンプルとして微妙(苦笑)。
(上が差分のハイライトあり。下はハイライトなし)
image.png

5. Irfanvieで情報を比較する

ファイルサイズに大きな差は見られないが、再劣化のせいか色数が変化している。
比較方法としてが上々。
image.png
う~ん、ロッシー。。。

検証① jpegtanロスレス変換検証👍

手順

  1. PhotoshopプログレッシブJPEG を作る。
    sample.jpg
  2. jpegtanプログレッシブJPEGベースラインJPEG に変換。
    sample.jpgbaseline.jpg
  3. jpegtanベースラインJPEGプログレッシブJPEG に変換。
    baseline.jpgprogressive.jpg
  4. WinMerge で比較する。
  5. Irfanvie で情報を比較する。

結果

1.PhotoshopでプログレッシブJPEGを作る。

sample.jpg
sample.jpg
※ pixivでは年齢制限がかかっているのでモザイク処理

2, 3 jpegtanで変換。

command
@REM 2. sample.jpg ⇒ baseline.jpg
jpegtran.exe -outfile baseline.jpg sample.jpg
@REM 3. baseline.jpg ⇒ progressive.jpg
jpegtran.exe -progressive -outfile progressive.jpg baseline.jpg

4. WinMergeで比較する。

WinMergeさんの回答。
image.png
image.png
確かにぱっと見変なところ無い。
(もともとそんなにわかんないけど(苦笑))

5. Irfanvieで情報を比較する。

ファイルサイズやクオリティ情報などにもおかしな点は見られない。
image.png

後記

Walkmanの三大欠点と言えば
1. ATRACKを廃止したのに代替のギャップレスの音声フォーマットが無い
2. プレイリストが上のフォルダに上れない
3. アルバム アートがプログレッシブJPEG非対応
と言う割とひどいクズっぷりなのだけど。

アルバム アートについては、このご時世にプログレッシブJPEG非対応ってのはほんとツラい。。。

どうしたって、頑張ってネットの海から集めなきゃなんないじゃん?昔のCDなんか特に。せっかく頑張ってアルバム アート用画像集めても、ベースラインかプログレッシブかなんて、パット見わからないし。ただでさえ判定方法も手順的には難しそうなのに、さらに音声データに登録されてりる中から探すとか。どすりゃ良いのさ。マイナーなフォーマットってわけでも無いのに。。。

そんなわけで、Walkmanのアルバム アートの プログレッシブJPEGベースラインJPEG に変換するにあたり、なんとかロスレス変換出来ないものかと思い、JPEGの仕様を読もうと思って諦めの瞬殺。そんなかで見つけた jpegtan まさに理想のツールだったため非常にありがたかった。

直近のものいくつかは画像データそのままあるから、まずはそこから走査と思うのだけど。さて、判定はどうしたものか。。。

jpegtan によって、ベースラインJPEG - プログレッシブJPEG のロスレス変換が可能、と言う証明がされたので、改めて自分で実装してみるのも面白そう。良い勉強になりそう。いい加減 可変長Bit表現 とかも理解したいし。

余談

JPEGはジェイペグと読みます 』 って押し付けてくるの、とっても嫌いがあります。
MPEGも。

参考 (謝辞)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1