更改图像大小并导出图像AS3

时间:2015-06-16 01:58:58

标签: image actionscript-3 flash

在Flash中,我有一个外部图像,我使用精灵加载该图像,供用户编辑图像。

var bitmapData:BitmapData = Bitmap(event.currentTarget.content).bitmapData;
var bitmap:Bitmap = new Bitmap(bitmapData);

bitmap.smoothing = true;
bitmap.width=500
bitmap.height=300
photoHolder = new Sprite()
photoHolder.addChild(bitmap);

编辑后,我想保存相同的图像,但宽度和高度不同,例如800x480。在保存图像时,我这样做了。

**var myBitmapData:BitmapData = new BitmapData(photoHolder.width, photoHolder.height);**//photoHolder.width, photoHolder.height
myBitmapData.draw(photoHolder);

稍后使用FileStream保存它。

private function F_saveImageActions():void{
        //get Bimapdata from file
        var myBitmapData:BitmapData = selectedFile.photo_bitmapData
        //encode, turn into byeArray
        var jpgEncoder:JPGEncoder = new JPGEncoder(100);
        var imgByteData:ByteArray = jpgEncoder.encode(myBitmapData);
        //
        var folder:File = File.documentsDirectory.resolvePath("Myproject/myImage.jpg");

        imageFileStream = new FileStream();  
        imageFileStream.addEventListener(Event.CLOSE, FS_imageFileClosed);
        imageFileStream.addEventListener(Event.COMPLETE, FS_imageCompleteHandler); 
        imageFileStream.addEventListener(ProgressEvent.PROGRESS, FS_imageProgressHandler); 
        imageFileStream.addEventListener(IOErrorEvent.IO_ERROR, FS_imageErrorHandler); 
        imageFileStream.openAsync(folder, FileMode.UPDATE);  
        imageFileStream.writeBytes(imgByteData);

} 我尝试通过编辑上面的粗线来改变大小。      var myBitmapData:BitmapData = new BitmapData(800,480);

但它没有用。它的结果与我的预期不同,质量也受到了影响。所以这里要确切的是我的问题

如何从舞台上的精灵更改图像的大小并导出它而不会丢失其质量?(AS3)

1 个答案:

答案 0 :(得分:0)

好的,我找到了它!

var matrix:Matrix = new Matrix();
matrix.scale(scaleX_var, scaleY_var);

并将其传递给drawWithQuality();参数。