Skip to main content
Participating Frequently
March 12, 2021
Question

ScriptでJPGがベースラインかプログレッシブかを判別する方法

  • March 12, 2021
  • 3 replies
  • 5037 views

PhotoshopのScriptで、開いている画像がJPGがベースラインかプログレッシブかを判別する方法をご存知の方がいれば教えてください。

 

サイズや解像度等は取得できているのですが、上記はどのように記述すれば良いか分かりません。

This topic has been closed for replies.

3 replies

Ten A
Community Expert
Community Expert
March 17, 2021

SOF0というのはハフマン式コードのベースラインDCTフレームの開始マーカーでバイナリ値が0xffc0になります。一方プログレッシブDCTフレームの場合SOF2というマーカーから始まり値は0xffc2です。ベースラインで保存されたJPEGファイルにはSOF2マーカーは含まれないのでファイルの冒頭部分をバイナリ検索して0xffc2が見つからなければ、そのファイルはベースラインで保存されたファイルだと推測できます。

詳しいことは「JPEG ファイルフォーマット」のようなキーワードで検索すれば見つかるでしょう。

匿名SAuthor
Participating Frequently
March 21, 2021

検索して確認しました。ありがとうございます。

画像の仕様とJavaScriptのコードの書き方について改めて勉強が必要になりそうです。

Ten A
Community Expert
Community Expert
March 16, 2021

まず、上に挙げたリンクを確認してください。

匿名SAuthor
Participating Frequently
March 17, 2021

上記リンクのスクリプトを実行してみました。

 

自分には難易度が高いですが、

既にあるスクリプトにどう反映すれば良いか読み解いてみます。

Ten A
Community Expert
Community Expert
March 13, 2021

Photoshopはビットマップ画像を開くとその元のファイルについては頓着しません。ので、JPEGファイルの状態関してはオブジェクトモデルには参照できるものがありません。
こう言ったケースでは、オリジナルのファイルをJavaScrirptで読み込みSOF0かSOF2のマーカーを検索することによってベースラインかプログレッシブかを判別可能です。
わたしもちょっとだけツールを書いてますので参考まで。
https://github.com/ten-A/Extend_Script_experimentals/blob/master/jpgTool.jsx

匿名SAuthor
Participating Frequently
March 15, 2021

ご回答ありがとうございます。

 

SOF0かSOF2のマーカーを検索するには、どのような記述をすればよろしいでしょうか?

ググってみたのですが、該当する情報がうまく見つからず、ご教示いただけますと幸いです。

 

よろしくお願いいたします。