🛠Tools🔥

Regressive JPEGs、JPEG の仕様を悪用した疑似アニメーション手法を公開

プログレッシブ JPEG のスキャン順序を操作し、ブラウザのレンダリング挙動を利用して単一画像ファイルで動的表示を実現する実験的プロジェクト。
リリース: 2026-07-17 · 読了 3

記事の要約

1. 核心(What)

  • JPEG のプログレッシブ形式におけるスキャンヘッダー(FF DA マーカー)を操作し、後続のスキャンデータで既存の描画内容を上書きする手法を提案。
  • 複数の画像を連結し、ブラウザのデコーダーが読み込み中に画像を切り替える挙動を利用してアニメーションを生成。
  • Chrome では最大 90 フレーム程度の表示が可能であり、Firefox ではそれ以上のフレーム数にも対応する挙動を確認。

2. 影響(Why)

  • 画像フォーマットの脆弱性: 画像データが「上書き」可能であるという仕様の盲点は、セキュリティ上のリスクや、意図しないコンテンツ表示の温床となる可能性がある。
  • 国内 Web 制作現場への影響: Web サイトの軽量化を目的とした画像最適化ツールを開発する国内の小規模開発チームは、ブラウザごとのデコード仕様の差異がレンダリング結果に与える影響を再評価する必要がある。

3. 根拠・詳細(How)

  • スキャンデータの連結と制御: C 言語で記述されたプログラムを用い、同一解像度の JPEG 画像から Start-of-Image (SOI) や Start-of-Frame (SOF) マーカーを除去し、スキャンデータのみを連結して生成。
  • ブラウザのデコード限界: ブラウザ側のデコーダーが備える「Zip Bomb」対策としてのスキャン数制限(Chrome で約 90 フレーム)を回避するため、DC 成分のみの最小限のスキャン構成を用いてフレーム数を確保。

4. 展望・課題(Next)

  • ブラウザ実装の互換性: ブラウザごとにスキャン数の許容上限が異なるため、クロスブラウザ環境での安定した表示にはさらなる最適化と検証が必要。