These pages are written by only Japanese.

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

こんにちは♪ 現在は8月9日(日)17時41分。 今日も一日、お疲れさまです。


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

先月 2008年02月 来月
01 02
03 04 05 06 07 08 09
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2008年02月03日(日)

JPEG のセグメント分割

とりあえず、セグメント分割には成功。 試しに、 このサイトの jpg2swf4.zip に含まれている swfjpeg.c を見たところ 似た感じの処理になっていた。似てるって事はきっと、大丈夫。(検算のつもり)

分割の実行例:

普通の画像
% php jpegdump.php ~/sp/img/aria.jpg
0x0000: SOI(Start of Image)(FFD8)
0x0014: APP0(FFE0) length=16
0x0038: APP1(FFE1) length=34
0x007d: DQT(FFDB) length=67
0x00c2: DQT(FFDB) length=67
0x00d5: SOF0(FFC0) length=17
0x00f6: DHT(FFC4) length=31
0x01ad: DHT(FFC4) length=181
0x01ce: DHT(FFC4) length=31
0x0285: DHT(FFC4) length=181
0x0293: SOS(FFDA) length=12
0x27c7: EOI(End Of Immage)(FFD9)%
chara.swf から抽出した DefineBitsJPEG の画像データ。
% php jpegdump.php image1.jpg
0x0000: SOI(Start of Image)(FFD8)
0x0014: APP0(FFE0) length=16
0x0027: SOF0(FFC0) length=17
0x0035: SOS(FFDA) length=12
0x7c95: EOI(End Of Immage)(FFD9)
%
でもって、chara.swf の JPEGTables
% php jpegdump.php tag_1_8.bin
0x0000: SOI(Start of Image)(FFD8)
0x0047: DQT(FFDB) length=67
0x008c: DQT(FFDB) length=67
0x00ad: DHT(FFC4) length=31
0x0164: DHT(FFC4) length=181
0x0185: DHT(FFC4) length=31
0x023c: DHT(FFC4) length=181
0x023c: EOI(End Of Immage)(FFD9)
%
という訳で、JPEGTables に圧縮用テーブルが、 DefineBitsJPEG に圧縮されたデータが入っている(事もある)と。

事もある?:

自分が CS3 で作った swf は、DefineBitsJPEG の中には 以下のように、圧縮テーブルと圧縮データが両方入っていた。
% php jpegdump.php  image1.jpg
0x0000: SOI(Start of Image)(FFD8)
0x0014: APP0(FFE0) length=16
0x0059: DQT(FFDB) length=67
0x009e: DQT(FFDB) length=67
0x00b1: SOF0(FFC0) length=17
0x00ce: DHT(FFC4) length=27
0x010f: DHT(FFC4) length=63
0x012b: DHT(FFC4) length=26
0x0159: DHT(FFC4) length=44
0x0167: SOS(FFDA) length=12
0x0851: EOI(End Of Immage)(FFD9)
%
この場合、JPEGTables は中身が空らしい。
% php swfdump.php saitama.swf
% php swfdump.php saitama.swf  | less
array(3) {
  ["magic"]=>
  string(3) "FWS"
	<略>
tag=SetBackgroundColor(9) length=3
tag=ShowFrame(1) length=0
tag=JPEGTables(8) length=0
	<略>
というわけで、SWF バイナリの画像を差し替えるには、 このパターンも考えた方がよいって事で。
(JPEGTables があっても、DefineBitsJPEG に圧縮テーブル入り画像ファイル を差し込むと、きちんと表示されるのは PC で確認したけど、携帯では未確認)

Flash SWF の Tag 分解&保存プログラム。

JPEGTables を抜き出す為に作ったコードはこれ。 タグの中身を(長さフィールド以外は)解釈せずに、そのままバイナリに落とす。

chara.swf の画像抽出 (成功)

画像データが複数のタグに分割されているので試しにくっつけてみたが、 画像ビューアで開けず。
% cat  image1.jpg tag_1_8.bin  > tmp.jpg
  # image1.jpg  : DefineBitsJPEG (JFIF +画像圧縮データ)
  # tag_1_8.bin : JPEGTables     (圧縮テーブル)

更に間の EOI, SOI を削ってみた:

でもダメだった‥
% php jpegdump.php  image1.jpg
0x0000: SOI(Start of Image)(FFD8)
0x0014: APP0(FFE0) length=(2+)14
0x0027: SOF0(FFC0) length=(2+)15
0x0035: SOS(FFDA) length=(2+)10
0x7cda: DQT(FFDB) length=(2+)65
0x7d1f: DQT(FFDB) length=(2+)65
0x7d40: DHT(FFC4) length=(2+)29
0x7df7: DHT(FFC4) length=(2+)179
0x7e18: DHT(FFC4) length=(2+)29
0x7ecf: DHT(FFC4) length=(2+)179
0x7ecf: EOI(End Of Immage)(FFD9)
やはり、画像データが入っている SOS より前に 圧縮テーブルの DQT,DHT を持ってこないとダメか。 でも、JFIF signature が入ってる APP0 セグメントが image1.jpg の方にあるので、 「cat tag_1_8.bin image1.jpg」って訳にもいかないし *1 …。うーむ‥
仕方ないので面倒がらずに APP0 の後ろに DQT, DHT を挟んでみよう。

APP0 と SOF[02]の間に DQT DHT を挟んでみた:

% php jpegdump.php image1.jpg
0x0000: SOI(Start of Image)(FFD8)
0x0014: APP0(FFE0) length=(2+)14
0x0059: DQT(FFDB) length=(2+)65
0x009e: DQT(FFDB) length=(2+)65
0x00bf: DHT(FFC4) length=(2+)29
0x0176: DHT(FFC4) length=(2+)179
0x0197: DHT(FFC4) length=(2+)29
0x024e: DHT(FFC4) length=(2+)179
0x0261: SOF0(FFC0) length=(2+)15
0x026f: SOS(FFDA) length=(2+)10
0x7ecf: EOI(End Of Immage)(FFD9)
%
読めたーっ (・∀・)
少し不安なので、リンク先を開いて画像が読めなかったり 壊れて見える方がいらっしゃいましたら、ご連絡を頂けると幸いです。m(_ _)m

ちなみに、背景の壁紙とこの子のピクチャだけ DefineBitJPEG (α値無し画像) で、 他は DefineBitJPEG3(α値付き画像) で後者はまだ抽出できないので‥
つまり、たまたまです。たまたまですよ。

実装したコード:

の中の「swfjpegextract.phps -> FlashSWF.phps -> FlashJPEG.phps」
の処理が今回、実装したところ。

さて‥:

次は convertToFlashJPEG() メソッドを実装しようか、DefineBitJPEG3 のパース処理を考えようか。うーむ。
と考えながら10分手を動かしたら DefineBitJPEG3 から画像が抽出できた‥ (慣れって恐ろしい…)
ばぶ? ← DefineBitJPEG3 タグから抽出した画像。

さて、かなり寄り道したけど *2 、本来の目的に戻って convertToFlashJPEG を作るか‥

2010年4月26日 追記:

「画像抽出」で検索して来られた方がいるので、以下に追記。

*1: 勿論、試してダメなのは確認した。
*2: 普通の人より沢山寄り道しないと何も理解できない弱い頭なんで…

知人がどんどんmixiを辞めていく…

記事自体は普通だけど、コメントが面白いなぁ‥

コメントから抜粋:

mixiの相互監視社会は異常ですからねぇ。やっぱり疲れるんじゃないですか。
----
Posted by: みかん | 2008.02.01 at 19:08

一番楽なんは、有名ブログの※カキコ

レスの形で脳内的にコミュニケーションが成立してて、
それでいてちゃんと自分が寝てる時にも自動更新されていて、
かつテクストに対して常に後出しジャンケンという男気ポジション、
これチョーお得チョー最強。
----
Posted by: th | 2008.02.01 at 21:55

実は2週間前に始めたばかりなのだが、率直な感想、、、
ヌルイんだよねmixiは。 ネットの大海から隔離されている鎖国状態。
外来種から隔離されている無人島では近親交配が重なり、奇形や異型の種が繁殖する。
これと同じ様な事態が進行しているように感じる。
「私に注目して!」タイプ。 「私と共感して!」タイプ。
「単にネットを通じてのコミュニケーションで満足」タイプ。
これらが3大特徴じゅあないの?
金儲け目的の勧誘に利用しているヤツもいるけど、
そのほうが俺的にはスッキリと理解できる。 
----
Posted by: サムライ | 2008.02.01 at 22:15

Google Social Graph API登場 - 公開情報から人のつながりを探せるように

すごそう…
サンプルのサイトが知らないブログサイトしか対応してないので、 まだ、実感わかない。自分でサンプル作らないとダメかな。

Torを使った匿名プロキシ「Vidalia」

PCに常駐させる気はないけど、どんなものかは調べておこう。

学校裏サイト、先生の「闘い」 教研集会で事例報告

(ここで説明してるのは悪い意味でだけど)、 若者はきちんと使いこなしてるようですねぇ‥

眼に入れても痛くない(らしい)コンタクトレンズ型ディスプレイ

すごく大きく見えるのは気のせいですか。

ニュース速報板「至高のコピペ」

前半は微妙だけど、真ん中辺りは面白いと思う。
2ch をあまり知らない自分には新鮮に映ります。
いや、ほんとに知らない話ばかりで。^^;

これで、1 日分だよ〜。

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