お勉強です。
FLASHを使用した、画像のインポート( アップロード)から描画、ダウンロードまでの、
一連の流れのFLASHを作ったので、公開します。
ローカルディスクの画像をロードし、FLASHで独自に描画処理を組み込み、
画像ファイルとしてローカルにディスクにダウンロードすることが可能です。
これで、ユーザーが任意の画像をアップして、お絵かきし、
書き出して保存(もしくはサイトに公開)するようなFLASHが作れます。
DRAWシリーズにも、実装していく予定です。
サンプルFLASH
操作方法
特徴
インポート、ダウンロードともに、いったんサーバーにアップロードしてますが、一時的にアップロードしてるだけで、すぐに削除されます。
(サーバーにファイルがたまらないし、第三者に見られることもありません)
仕組み
FLASH単独でできればいいのですが、セキュリティの関係で、ファイル入出力の機能は制限されています。なので、ファイル入出力の部分は、サーバー上にアップされたPHPプログラムをかまして実現してます。
画像インポート
- 画像(png,jpg)をサーバーにアップ
- ローカルの画像データをFileReferenceを使って、POSTデータでサーバー上のPHPに送信
- PHPで画像データをサーバーに保存
- 保存した画像URLをFLASHにコールバック
- アップした画像をFLASHにロード
- ロードし終わったらサーバーの画像削除
画像ダウンロード
- 画像(png,jpg)をサーバーにアップ
- ダウンロードしたいBitmapData画像を外部ライブラリを使用し、PNGまたはJPGにエンコード
- エンコードされた画像データをPHPに送信し、サーバーにアップロード
- アップロードした画像URLをFLASHにコールバック
- アップした画像をダウンロード
- ロードし終わったらサーバーの画像削除
参考情報
BitmapData画像を、PNG、JPGへエンコードしてくれるAS3ライブラリ
以下のライブラリは、ActionScript 3用のユーティリティライブラリで、その中のJPEG、PNGエンコード使用すれば、FlashのBitmapDataを、
PNG、JPGへエンコードしてくれます。
as3corelib
以下は、参考にさせてもらったサイトです。
Flashから画像ファイルを保存する - FICC LABS
PNGエンコーダ - Flash OOP Japan
Flash中のBitmapをJPG/PNGで保存するには - TECH Matari
PNG、JPGへエンコード自体は、ものすごく簡単ですが、その後のPHPの処理のほうが面倒ですね。
そのほか
ソースFLASHファイル
ソースのFLASHとPHPファイルをアップします。自己責任で改変OKです。素敵な機能を追加したら教えてください。
[ ソースのFLAファイル ]
なお、as3corelibのクラスファイルは含めてありませんので、ご注意を。
あと、PHPの動くサーバーにアップする必要があります。
PHPファイルと、temporaryディレクトリは、SWFとは別のサーバーでも問題ありません。
(PHPへのパスをあわせる必要はあります)
クレジット
設計・実装 : PIXEL IMAGE 田中以上です。
使用は、ご自由に。
コメント (1)
山本:はじめまして。
まさにこの様なことができないかと調べていて貴サイトにたどり着きました。ご丁寧な解説で素人同然ながらなんとか真似をしながら作成してみましたが、突然動かなくなりました。
色々と調べてみたのですが、FLASH PLAYERをバージョンアップしたことが原因なようです。
貴サイトのサンプルFLASHでもやはり動きませんでした。
お忙しいところ勝手なお願いではございますが、対応方法等お分かりになれば、またご解説いただけますと幸いです。
とても参考になり、本当にありがとうございました。
投稿者: 山本 | 2009年04月23日 16:06
日時: 2009年04月23日 16:06