人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【swfmillでgif】swfmillを使って、画像を置換していたのですが、jpg以外の拡張子の画像置換がうまくいきません。調べたところ、jpg以外の画像はflashの方で独自のバイナリ形式を持っている様なことが書いてあり、普通には置換出来ないことが分かりました。

下記サイトでrubyのサンプルを書いてくださっている方がいたのですが、これと同じ処理をPHPで実現するにはどのように書けば良いでしょうか?
http://tmty.jp/2009/05/08/shared_swfmill_ruby/

ご存知の方がいらっしゃいましたらご教示ください。

●質問者: res01
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Flash GIF jpg PHP Ruby
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● km1967
●10ポイント

swfmillではなImageMagickの使い方を教えろ

という質問かな?

◎質問者からの返答

結果としてflashlite1.1のgif画像データを置換できれば何でも構いません。

お恥ずかしい話ですが、先のURLに書かれているrubyのコードがimagemagickを使って何をしているかを理解出来ていません。

そこを教えていただけると助かります。


2 ● km1967
●10ポイント

先のURLに書かれているrubyのコードがimagemagickを使って何をしているかを理解出来ていません

ごめん

その程度のスキルの人に、文字だけで教えるのは難しいわ・・・

◎質問者からの返答

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

精進します。


3 ● Watson
●50ポイント ベストアンサー

GIF や PNG は SWF の独自ビットマップ形式 DefineBitsLossless2 で保持する必要があり、

imagemagickを使用して画像データを取得した後、ピクセル単位で処理して DefineBitsLossless2 に

変換しているようです。

変換している箇所は

http://github.com/tmtysk/swfmill_ruby/blob/master/lib/swf.rb

の 211 行目からの def self.image2xml(object_id, image) で行っているようです。

DefineBitsLossless2 のアルゴリズムを知らないため、詳しい処理はよくわかりませんでした。

あとXMLに保存するときにはノード名をDefineBitsJPEG2 -> DefineBitsLossless2 に変換して

保存しているのかな、と思います。

◎質問者からの返答

>DefineBitsLossless2 のアルゴリズムを知らないため、詳しい処理はよくわかりませんでした。

同じく詳しい処理が良くわからないため、PHPで実現する際に何をしたらいいかがわからず右往左往しておりました。

rubyに親しくないためコードを読むことを半ば放棄していましたが、きちんと読みなおそうと思います。

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


4 ● Watson
●50ポイント

http://github.com/tmtysk/swfmill_ruby/blob/master/lib/swf.rb

の処理をもう少し書いておきます。

・218〜231行

1ピクセルごとデータをチェックしていき画像で使用している色数をカウントしています。

・234〜267行

チェックした色数に応じてformat-5かformat-3のデータを生成。

・269〜272行

ビットマップデータをZLIB圧縮。

DefineBitsLossless2 のフォーマットは下のサイトなどで見つかりました。

フォーマットをみてから、rubyの処理を見直せばそれほど難しいことはしてなさそうなので

がんばってください。

◎質問者からの返答

結局、phpのGDライブラリ側で透過gif画像をjpgに重ねあわせて一枚にすることで解決としました。

ご丁寧に指南いただき本当にありがとうございました。rubyの方もせっかくなのできちんと読んでみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ