- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
TITLE:SWF Editor for PHP
CENTER:''SWF Editor for PHP (テスト中)''
RIGHT:(c) 2008/03/09- yoya@awm.jp
#contents
CENTER:5月頭目標で実用的な品質まで持って行く予定
* 目的 [#purpose]
- とりあえずJPEG画像の入れ替え
-- PNGのような未圧縮画像も希望があれば対応するかも
- 次にテキストツールで貼り付けた文字列の入れ替え
* 設計 [#design]
- PHP extension (php 5.1.6 ← CentOS 5 の yum の対応バージョンがそれなので…)
- bit stream 処理は自作 (もしイイのがあったら誰か教えて…)
- CWF (zlib 圧縮) 対応%%は後回し (でも、後で対応できるように)%% ← 対応しました
- tag ブロック分割と tag の詳細parse を分けて、余分な処理をなるべく省く。
** 仕様 [#api]
- php.ini の ext 設定に swfed.so を追加
- PHP extension API
class SWFEditor {
function input(string swddata) return true/false;
function output() return string swfdata;
function swfInfo() return ; // print swfInfo
function getTagList();
return array(array('tag'=>long,
'length'=>long,
'detail'=>bool),
...)
function getTagDatail(integer seqno);
return array(...); image_id とかそれ系
function getJpegData(integer image_id)
return string jpegdata;
function getJpegAlpha(integer image_id)
return string alphadata;
function replaceJpegData(integer image_id, string jpegdata
[,string alphadata])
return true/false;
function getEditTextString(string variable_name); return text;
function replaceEditTextString(string variable_name, string text)
return true/false;
---- ここから下は未実装
function getTagData(integer seqno);
return string tagdata;
}
*** 使用例 [#usage]
- http://diary.awm.jp/~yoya/data/2008/04/23/swfed/swfdump.phps
- http://diary.awm.jp/~yoya/data/2008/04/23/swfed/swfreplaceeditstring.phps
** 実装 [#impl]
- なるべく swf_{object|header|tag|...}.c 側に処理を作って、swfed.c はそこへの橋渡しに徹する。
- swf_tag_<タグ名の省略形>.[hc]
swf_tag_info_table に swf_tag_detail_handler_t の形式で関数ポインタ群を設定
-> {create, identity, output, print, destroy}
* 成果物 [#output]
** プログラム [#program]
-- http://diary.awm.jp/~yoya/data/2008/04/29/swfed/ 最新は多分こっち
-- http://diary.awm.jp/~yoya/data/2008/04/23/swfed/ ~.phps はこっち
** 実験ページ [#testpage]
- http://awm.jp/~yoya/php/flash/swfdump/
- http://awm.jp/~yoya/php/flash/swfdump.php
** インストール方法 [#install]
- swfed をディレクトリ毎もってくる
- php ソースツリーの ext 以下に swfed を配置
- swfed で phpize & configure & make
cd /home/<yourname?>/src/php-5.2.5/ext/swfed
phpize
./configure
make
* 日記 [#diary]
-- http://diary.awm.jp/~yoya/?20080331#200803311 | ([http://d.hatena.ne.jp/yoya/20080331 hatena] | [http://mp.i-revo.jp/user.php/wrckyapk/entry/7378.html i-revo mp])
* 課題 [#w9c739f4]
- DefineBitsJPEG2,3 の動作テスト
- メモリ管理のブラッシュアップ
-- エージングに耐えられるように
- swf_tag.c の処理が冗長なので何とかする
- swfed.c の new_buff の処理を何とかする。
** 必要が生じたら [#kf22b7d4]
- DefineBitsLossless(未圧縮画像, BMP とか PNG 等)も要望があれば対応するかも。
* 資料 [#data]
** 調査 [#study]
- Flash SWF バイナリ ([[Flash/SWF]])
- PHP extension の作り方 ([[PHP/ext]])
- zlib の使い方 ([[zlib]])
- [http://diary.awm.jp/~yoya/?2008021&to=200802132#200802132 FlashSWF alpha データ抽出@Yoya's diary]
** 参考 [#ref]
- http://sswf.sourceforge.net/SWFalexref.html
-- http://www.m2osw.com/swf_alexref.html
- http://www.swftools.org/
** 未参考 [#noref]
- SWF::Parser - SWFファイルをパース
-- http://perldoc.jp/docs/modules/SWF-File-0.20/Parser.pod
- SWF::Builder - SWFファイル生成
-- http://d.hatena.ne.jp/sfujiwara/20070618/1182172990
- PECL swf
-- http://cvs.php.net/viewvc.cgi/pecl/swf/
- jpeglib の使い方 ([[jpeglib]])
* 関連ページ [#rel]
- Flash SWF バイナリ ([[Flash/SWF]])
- PHP extension の作り方 ([[PHP/ext]])
- zlib の使い方 ([[zlib]])
- image mask extention ([[imgmask]])
- image composer extention ([[imgcompo]])