TIFF ファイルを JPEG フォーマットに変換してアプリに渡す

Adobe Flex は、画像ファイルとして扱えるのは、PNG, JPEG, GIF, SVG の4種類だけ。

例えば、インターネット上の TIFF ファイルを URLLoader で取得して、それを Loader で、

bmp:Bitmap = Bitmap(event.target.content);

みたいにビットマップデータとしてロードすることは出来ない。

つーことで、今回は Perl で wrapper として動く API プログラムを作成して、AIR アプリから TIFF ファイルへのアクセスがあった場合、JPEG 画像に変換してデータを渡すことにした。

例えば、TIFF 画像を $data に読み込んだ後で、Image::Magick モジュールを使って、

use Image::Magick;

my $image = Image::Magick->new();
$image->Set(magick => 'tif');
$image->BlobToImage($data);

# 今回は、画像サイズを縮小するので、その処理も
my($width, $height)    = $image->Get('width', 'height');
$height    = int($height * ($Width(変更後の横幅) / $width));
$image->Resize(width => $Width, height => $height);

my $new_data    = $image->ImageToBlob(quality => $Quality(画質), magick => 'jpg');

こんな感じ。
これで、$new_data に TIFF から変換された JPEG 画像データがセットされるので、

my $size    = length($new_data);

print "Content-type: image/jpeg\n";
print "Content-Length: $size\n";
print "\n";
print $new_data;

で、AIR アプリ側でも問題なく画像が表示される。

Image::Magick もたまにしか使わないので、いつもメソッドやプロパティを忘れてしまうので、一応、メモ代わりに書いておこう。

トラックバック(0)

このブログ記事を参照しているブログ一覧: TIFF ファイルを JPEG フォーマットに変換してアプリに渡す

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/2184

コメントする

このブログ記事について

このページは、shinodaが2012年9月 3日 19:16に書いたブログ記事です。

ひとつ前のブログ記事は「これ、ベースは荒井貿易のレジェンドシリーズだったんだな」です。

次のブログ記事は「中学野球での審判(塁審)デビューであった」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら