Я написал эти функции, которые я использую совместно, чтобы уменьшить некоторые BitmapData и сохранить его как PNG. Тем не менее, строка scaledImage.draw(originalImage, scalingMatrix, null, null, null, true);
с сглаживанием, установленным в true, не имеет предполагаемого эффекта сглаживания, когда я сохраняю данные растрового изображения как PNG, используя вторую функцию. Полученный файл изображения вообще не сглаживается. Что-то я здесь делаю неправильно? Благодаря!Actionscript/Air/Flex 4 - Загрузка изображения из файла, масштабирование вниз и сохранение в виде PNG
public static function scaleImage(originalImage:BitmapData, size:int):BitmapData
{
// Calculate the scaled size.
var scale:Number;
var scaledWidth:Number;
var scaledHeight:Number;
if (originalImage.width > originalImage.height)
{
scale = (size as Number)/(originalImage.width as Number);
scaledWidth = size;
scaledHeight = originalImage.height * scale;
}
else
{
scale = (size as Number)/(originalImage.height as Number);
scaledHeight = size;
scaledWidth = originalImage.width * scale;
}
var scalingMatrix:Matrix = new Matrix();
scalingMatrix.scale(scale, scale);
// Scale the image.
var scaledImage:BitmapData = new BitmapData(scaledWidth, scaledHeight, true, 0x00000000);
scaledImage.draw(originalImage, scalingMatrix, null, null, null, true);
return scaledImage;
}
public static function saveImageAsPNG(image:BitmapData, imageFile:File):void
{
// Encode the image as a PNG.
var pngEncoder:PNGEncoder = new PNGEncoder();
var imageByteArray:ByteArray = pngEncoder.encode(image);
// Write the image data to a file.
var imageFileStream:FileStream = new FileStream();
imageFileStream.open(imageFile, FileMode.WRITE);
imageFileStream.writeBytes(imageByteArray);
imageFileStream.close();
}