ImageConverterという本当に簡単すぎる画像変換アプリをこないだ作ったのですが、画像変換には、
Corelibの、
JPGEncoderとPNGEncoderを利用しました。
GIFがないのはライセンス問題とかなのかな?
入手方法は、
http://code.google.com/p/as3corelib/
のページの『Featured Downloads』あたりからダウンロードして下さい。
ダウンロードしたファイルを解凍し、Flexから使えるようにします。
実際のファイルが、
[パス]/com/adobe/images/
以下にあるものとして話しを進めます。
これは、
bitmapDataのデータを変換します。
importしておきたいもの:
flash.display.BitmapData
flash.utils.ByteArray
使い方
JPGEncoder:
//ライブラリのインポート
import com.adobe.images.JPGEncoder;
private var jpgEncoder:JPGEncoder = new JPGEncoder();
private var byteArray:ByteArray = new ByteArray();
//100 , 100 は幅、高さです。
private var bitmapData:BitmapData = new BitmapData( 100, 100);
//bitmapDataに実際のデータを書き込みます。
bitmapData.draw(『何らかのデータ』);
//bitmapDataのデータをjpgに変換しbyteArrayに格納します。
byteArray = jpgEncoder.encode(bitmapData);
このbyteArrayを使ってURLStream , FileStreamでファイルを書き込むと、jpg画像が完成です。
JPGEncoderとの違いは、こちらはstaticなので、インスタンスを作成しません。
要するに、
JPGEncoder -> new JPGEncoder()とかしてから使う
PNGEncoder -> new とかなしでそのまま使う
ってことなんです。
一応サンプル。
PNGEncoder:
//ライブラリのインポート
import com.adobe.images.PNGEncoder;
private var byteArray:ByteArray = new ByteArray();
//100 , 100 は幅、高さです。
private var bitmapData:BitmapData = new BitmapData( 100, 100);
//bitmapDataに実際のデータを書き込みます。
bitmapData.draw(『何らかのデータ』);
//bitmapDataのデータをjpgに変換しbyteArrayに格納します。
byteArray = PNGEncoder.encode(bitmapData);
このbyteArrayを使ってURLStream , FileStreamでファイルを書き込むと、png画像が完成です。
ちなみに、実際のファイルはJPGEncoder.asとPNGEncoder.asにありますので、興味があれば一度見てみましょう。
僕にはまだまだ理解できませんが、ByteArrayを活用している風ですね。僕も理解して動画変換のライブラリとか作ってみたいです(あるいは作ってほしいです)。
2007年8月31日00:40