Flash 裁剪actionscript-3时缩放图像未保存

Flash 裁剪actionscript-3时缩放图像未保存,flash,actionscript-3,Flash,Actionscript 3,当我尝试保存已缩放的裁剪图像时,我的“保存”功能停止工作,但在图像未缩放时,该功能工作正常。有什么想法吗 这是我的密码: var loada = new Loader(); loada.load(new URLRequest("img_one.jpg")); loada.x = 205; loada.y = 110; loada.cacheAsBitmap = true; loada.scaleX = 1.5; function toCrop():void { //Matrix t

当我尝试保存已缩放的裁剪图像时,我的“保存”功能停止工作,但在图像未缩放时,该功能工作正常。有什么想法吗

这是我的密码:

var loada = new Loader();
loada.load(new URLRequest("img_one.jpg"));
loada.x = 205;
loada.y = 110;
loada.cacheAsBitmap = true;
loada.scaleX = 1.5;


function toCrop():void 
{
    //Matrix to holder the area to be cropped
    var maskRect = loada.mask.getBounds(loada);
    //Matrix of image to be cropped
    var imgMatrix= loada.mask.transform.matrix;
    //Cropped image
    var myCroppedImage:Bitmap = crop(maskRect, imgMatrix, loada.mask.width, loada.mask.height, loada );

    var m:Matrix = myCroppedImage.transform.matrix;

    var urlLoader:URLLoader = new URLLoader();
    //Set jpg quality of the image to be export 1-100
    var myEncoder:PNGEncoder = new PNGEncoder();
    //Create jpg to be exported
    var pngSource:BitmapData = new BitmapData (loada.mask.width, loada.mask.height, true, 0x00000000);
    pngSource.draw(myCroppedImage, m);
    //Create byte array to hold jpg data
    var byteArray:ByteArray = PNGEncoder.encode(pngSource);
    var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
    //Send image to the server to be saved
    var savePNG:URLRequest = new URLRequest(glo.bal.base_url+"save_png.php?r="+glo.bal.fb_id+glo.bal.image_extension);
    savePNG.requestHeaders.push(header);
    savePNG.method = URLRequestMethod.POST;
    savePNG.data = byteArray;
    urlLoader.addEventListener(Event.COMPLETE, doNothing1);
    urlLoader.load(savePNG);
}

function doNothing1(e:Event):void
{
    trace ( e );
}

function crop( rect, matrix, _width:Number, _height:Number, displayObject:DisplayObject):Bitmap 
{
    //Create cropped image
    var croppedBitmap:Bitmap = new Bitmap( new BitmapData( _width, _height, true, 0x00000000), PixelSnapping.ALWAYS, true );
    croppedBitmap.bitmapData.draw(displayObject, matrix , null, null, rect, true );
    return croppedBitmap;
}

在裁剪方法中,您是否尝试过在不传递原始DisplayObject的变换矩阵的情况下绘制它?在我看来,它不需要传递变换矩阵,尤其是因为您希望按原样复制DisplayObject的缩放版本

另外,在裁剪方法中,在绘制要复制的displayobject之前创建位图似乎有点倒退(我不认为这是弄乱它的原因,但可能值得一看……)

我会:

var bmd:BitmapData  = new BitmapData (_width, _height, true, 0x00000000);
bmd.draw (displayObject, null, null, null, rect, true);
return new Bitmap (bmd, PixelSnapping.ALWAYS, true);

向下滚动其底部尝试将myCroppedImage添加到舞台以确认裁剪操作成功。您看到的问题是,仅当我缩放图像时,它才会中断,如果我将缩放设置为1,它就会工作。。。任何更高的东西都会断裂。。。