2010-12-27 1 views
0

Я написал эти функции, которые я использую совместно, чтобы уменьшить некоторые 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();     
    }  

ответ

0

Оказалось, что этот код работал. Это было спасение сглаженных изображений. Это было не очевидно, потому что изображения, которые я уменьшал, составляли ~ 20K x 20K пикселей, поэтому jaggies появились в любом случае с сглаживанием. Сглаживание было очевидным с более «нормальными» размерами изображений, такими как 2K x 2K пикселей

 Смежные вопросы

  • Нет связанных вопросов^_^