0

これが私のコードです

     if (event.target.content is Bitmap)
{

    infotext.text = "got something";
    var image:Bitmap = Bitmap(event.target.content);
    var bitmapData:BitmapData = image.bitmapData;
    this.addChild(image);
    var j:JPGEncoder = new JPGEncoder(100);
    var bytes:ByteArray = new ByteArray();
    bytes=j.encode(bitmapData);
}
else
{
    throw new Error("What the heck bob?");
}

デバッグセッションを実行すると、ラインに到達するまですべてが正常に機能します

      bytes=j.encode(bitmapData);

その後は何も起こらず、私のプログラムは途方に暮れます助けてください


私はあなたの提案に従ってコードに変更を加えました

           var myImage:Bitmap =Bitmap(e.target.content);


    var bitmapData:BitmapData = new      BitmapData(myImage.width,myImage.height,true,0xffffffff);
    bitmapData.draw(myImage);

    var encoder:JPGEncoder = new JPGEncoder();
    var bytes:ByteArray = encoder.encode(bitmapData);

    this.addChild(myImage);

しかし、それは後に再び立ち往生します

       var bytes:ByteArray = encoder.encode(bitmapData);

私はここで何が間違っているのですか?

4

2 に答える 2

0

誰かがこれに遭遇した場合に備えて、bytearray JPEGEncoder クラスを使用していることを確認してください。より高速です: http://www.bytearray.org/?p=775

as3core は JPEGEncoder ではなく JPGEncoder です。JPG と JPEG の違い...これも私を悩ませました。

于 2013-04-22T16:54:26.970 に答える
0

ずっと前にこの同じ問題に遭遇したことは間違いないので、それからコードを引っ張り出して作業に取り掛かりました。
コードを確認した後、私が唯一違うと思うのは、最初に bitMapData を構築し、load 関数を介して画像を割り当てることです。
したがって、あなたの問題は bitmapData 変数の構築にあると思います。
次のコード ブロックは、他の多くの画像操作を行う、私が作成した関数から切り取られたものです。
したがって、基本的には縮小版であり、テストされていませんが、動作するはずです。

var myImage:Image = new Image();
myImage.load( Bitmap(event.target.content) );

var bitmapData:BitmapData = new BitmapData(myImage.width, myImage.height, true, 0xffffffff );
bitmapData.draw(myImage); 

var encoder:JPEGEncoder = new JPEGEncoder();
var data:ByteArray = encoder.encode(bitmapData);

this.addChild(myImage);
于 2012-06-23T15:25:21.957 に答える