0

ライブラリからビットマップデータにpngファイルを読み込もうとしていますが、読み込もうとするとEOFエラーが発生します。

ファイルの終わりが検出されました。flash.display :: BitmapData / setPixels()で

以下のコードで使用されている値を使用してコメントを追加しました。

var bitmapData_texture:BitmapData = new BitmapData(image.width, image.height, true, 0x0);
bitmapData_texture.draw(image);
var pixels:ByteArray = bitmapData_texture.getPixels(rect_bmp);
var bitmapData:BitmapData = new BitmapData(rect_bmp.width,rect_bmp.height,true,0x0);
trace("image width : "+image.width.toString());       //image width : 161
trace("image height: "+image.height.toString());      //image height: 171
trace("rect x      : "+rect_bmp.x.toString());        //rect x      : 0
trace("rect y      : "+rect_bmp.y.toString());        //rect y      : 0
trace("rect width  : "+rect_bmp.width.toString());    //rect width  : 161
trace("rect height : "+rect_bmp.height.toString());   //rect height : 2
trace("bmpd width  : "+bitmapData.width.toString());  //bmpd width  : 161
trace("bmpd height : "+bitmapData.height.toString()); //bmpd height : 2
bitmapData.setPixels(rect_bmp,pixels);
4

1 に答える 1

1

(投稿された)コードに問題はありません。getPixels 呼び出しの直後に byteArray 情報をトレースしてみることができます。問題への洞察を提供する可能性がありますか?

//should be 4 bytes for every pixel in byteArray; so 4x161x2 = 1288
trace(pixels.length);
//should be at start of byteArray; so 0
trace(pixels.position);
//if position=0, this should be same as length
trace(pixels.bytesAvailable);

ところで、私は Nallaths のコメントに同意しません。圧縮を気にせずに、ライブラリから直接 (または URL を介して) PNG を実際にロードできます。

于 2012-12-16T04:34:20.113 に答える