These pages are written by only Japanese.

Welcom to My Diary.com
最新の日記タイトル一覧カテゴリ別タイトル一覧トップへ戻る〜

こんばんわ♪ 現在は4月20日(土)22時30分。 10時を過ぎて、そろそろ深夜に入ります。


hns - 日記自動生成システム - Version 2.19.5 (色々 Fixed)

先月 2010年06月 来月
1 2 3 4 5
06 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2010年06月06日(日)

JpegTables で共通化できるのか?

大量の JPEG データをファイルに含める際に、 圧縮用テーブルを共通で持てるとサイズが節減できる。
SWF ファイルがそれを意識した構造なので、 swfed のように SWF 内部の JPEG を入れ替えるツールで 利用できないか検証してみた。

検証概要:

世の中から無作為に JPEG ファイルを集め、 それらの圧縮用テーブルが何種類あるのか調べる。

圧縮テーブルセグメント:

まず、JPEG 中の圧縮テーブルセグメントだけ取り出すプログラムを作成。
% jpeg_jpegtable ~/love/aria.jpg tmp.jpg
% jpeg_segment tmp.jpg
(0) marker=SOI(FFD8): length=0
(1) marker=DQT(FFDB): length=65
(2) marker=DQT(FFDB): length=65
(3) marker=DHT(FFC4): length=29
(4) marker=DHT(FFC4): length=179
(5) marker=DHT(FFC4): length=29
(6) marker=DHT(FFC4): length=179
(7) marker=EOI(FFD9): length=0
15分ほど *1 であっさり出来た。ノリで SOI, EOI つけてるのはご容赦を。 jpeg_segment はこれね↑

検証作業:

まず、大量に集めた JPEG ファイルから内容が同じのを取り除く作業から。
MD5 Digest が同じファイルは一つを残して削除しまくる。 そして、以下のように JpegTables を抽出しながら、 それらの MD5 Digest 値を記録。
for f in *.jpg; do
jpeg_jpegtable $f /dev/stdout | md5sum - >> digest.list
done;
さて、結果は。
% wc  digest.list
 1756  3512 63216 digest.list
& sort digest.list  | uniq  | wc
   1063    2126   38268
うーん。思ったよりバラバラすぎる… 微妙。
JPEG 画像生成時に仕掛けを入れるならまだしも、 既にある JPEG 画像を差し替える swfed ではダメという結論です。

*1: しかも、その殆どは PHP に慣れすぎてて変数の頭に無意識に $ をつけては 消す作業に追われたという。。。

これで、1 日分だよ〜。

タイトル一覧
カテゴリ分類
Database
JXTA
Java
XML
awm
bookmark
keyword
memo
news
research
Powered by hns-2.19.5, HyperNikkiSystem Project