ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
フォーラム一覧   -   トピック一覧
   ActionScript 3.0
     JPEG画像の縮小をしようとしたが縮小後のファイルは画像が真っ黒で表示されない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
matsuken
投稿日時: 2012-11-29 14:24
やや お馴染みさん
登録日: 2012-11-9
居住地:
投稿: 4
JPEG画像の縮小をしようとしたが縮小後のファイルは画像が真っ黒で表示されない
JPEGファイルの画像サイズを縮小するアプリを作成しよう思い下記のようなコードを書きましたが、作成された縮小後のファイルを開くと真っ黒な画像?になっています。また、縮小後のファイルが作成されるまで、10秒くらいの処理時間がかかっています。処理時間としてはこのくらいかかるものなのでしょうか。ご存知の方よろしくご指導お願いします。

以下がAIRのコード全部です。

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init()">
<fx:Script>
<![CDATA[
import mx.graphics.codec.JPEGEncoder;

private var loader:Loader = new Loader();

private function init():void {
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
}
protected function testBtn_clickHandler(event:MouseEvent):void
{
// 3648×2736の画像
var fileIn:File = new File("C:/xampp/htdocs/jiichan/DSCN0290.JPG");
var streamIn:FileStream = new FileStream();
streamIn.open(fileIn, FileMode.READ);

var baIn:ByteArray = new ByteArray();
streamIn.readBytes(baIn);
streamIn.close();

// バイト配列をLoaderに変換
loader.loadBytes(baIn);

}
private function loadComplete(event:Event):void {
var matrix:Matrix = new Matrix();
matrix.scale(loader.width * 0.5, loader.height * 0.5);

var bmd:BitmapData = new BitmapData(loader.width * 0.5, loader.height * 0.5);
bmd.draw(loader, matrix);
var baOut:ByteArray = new JPEGEncoder().encode(bmd);
var fileOut:File = new File("C:/xampp/htdocs/jiichan/DSCN0290-2.JPG");
var streamOut:FileStream = new FileStream();
streamOut.open(fileOut, FileMode.WRITE);
streamOut.writeBytes(baOut);
streamOut.close();

testLabel.text = "resize ok";
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
</fx:Declarations>
<s:Button id="testBtn" x="301" y="276" label="ボタン" click="testBtn_clickHandler(event)"/>
<s:Label id="testLabel" x="222" y="195" text="ラベル"/>
</s:WindowedApplication>
kacchan6
投稿日時: 2012-11-29 17:29
ご主人様
登録日: 2009-10-15
居住地:
投稿: 167
Re: JPEG画像の縮小をしようとしたが縮小後のファイルは画像が真っ黒で表示されない
matrix.scale(loader.width * 0.5, loader.height * 0.5);

matrix.scale(0.5, 0.5);
では?

あと、JPEGEncoderで大きめの画像をエンコードするとかなりな時間がかかります。
Alchemyで実装された非同期エンコーダか、
BitmapData.compressを使用したほうが良いかと思います。
※compressは新し目のAPIです。
matsuken
投稿日時: 2012-11-30 9:33
やや お馴染みさん
登録日: 2012-11-9
居住地:
投稿: 4
Re: JPEG画像の縮小をしようとしたが縮小後のファイルは画像が真っ黒で表示されない
kacchan6様
ご指導ご指摘ありがとうございました。
ご指摘の場所を修正したところJPEGが目的どおり縮小されました。
63歳で退職し、孫の写真をアップロードするツールを作りたいと思いflexに挑戦しました。おかげさまでどうにか完成させることができそうです。
エンコードにはご紹介のBitmapData.compressを使用したいと思います。
ご親切にありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を