在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)
答案 0 :(得分:0)
好的,我找到了它!
var matrix:Matrix = new Matrix();
matrix.scale(scaleX_var, scaleY_var);
并将其传递给drawWithQuality();
参数。