В моем приложении Flex я загружаю изображение в элемент управления изображения.После загрузки изображения я могу применить фильтры, такие как преобразование цвета, оттенки серого и т. Д., А затем хочу сохранить изображение с примененным фильтром.У меня проблемы с сохранением изображения с примененными фильтрами.С помощью следующего кода изображение сохраняется без фильтров.Однако, если я использую
finalImagedata = ImageSnapshot.captureBitmapData (myImage);
, тогда изображение сохраняется с примененными фильтрами, но с размером элемента управления изображением.Я хочу сохранить изображение с его исходным размером.Для ясности, если изображение имеет размер 1000px X 1000px и отображается в элементе управления изображением 300px X 300px, при сохранении я все еще хочу сохранить изображение с разрешением 1000px X 1000px dimesnion.Как это сделать?Я также пытался получить BitmapData напрямую из контента управления изображением, как показано ниже, но это, похоже, не работает.Любая помощь, ребята?
finalImagedata = Bitmap (myImage.content) .bitmapData;
var filtersArray:Array = new Array;
private var finalImagedata:BitmapData;
private function loadImage(url:String):void
{
var request:URLRequest = new URLRequest(url);
var imageLoader:Loader = new Loader();
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, image_completeHanlder);
imageLoader.load(request);
}
private function image_completeHanlder(event:Event):void
{
var bmd:BitmapData = Bitmap(event.currentTarget.content).bitmapData;
var bmpMy:Bitmap = new Bitmap(bmd);
myImage.data=bmpMy;
}
protected function button1_clickHandler(event:MouseEvent):void
{
loadImage("http://localhost/main/image.jpg");
}
protected function prepareFinalImage():void
{
finalImagedata = new BitmapData(myImage.content.width, myImage.content.height, true);
finalImagedata.draw (myImage.content);
}
protected function btnSave_clickHandler(event:MouseEvent):void
{
prepareFinalImage();
var encoder:Object = new Object();
var defaultName:String;
var je:*;
je = new JPGEncoder(100);
encoder.encode = je.encode;
defaultName = "myImage.jpg";
var imageBytes:ByteArray = encoder.encode(finalImagedata);
var fr:FileReference = new FileReference();
fr.save(imageBytes,defaultName);
}
protected function btnGrayScale_clickHandler(event:MouseEvent):void
{
var red:Number = 0.3086; // luminance contrast value for red
var green:Number = 0.694; // luminance contrast value for green
var blue:Number = 0.0820; // luminance contrast value for blue
var cmf1:ColorMatrixFilter = new ColorMatrixFilter([red, green, blue, 0, 0, red, green, blue, 0, 0, red, green, blue, 0, 0, 0, 0, 0, 1, 0]);
filtersArray.push(cmf1);
myImage.filters = filtersArray;
}