그레이 스케일 이미지로 변환 한 후 이미지를 저장하고 싶습니다. 하지만 변환 후 이미지를 저장하는 데 문제가 있습니다. 나는 성공적으로 as3에 의해 그레이 스케일로 이미지를 변환하지만, 사용자 정의 클래스 BitmapSaver에 의해이 컬러 수정 된 이미지를 저장할 때, 저장된 이미지는 다시 그레이 스케일이 아닌 원래 색상입니다. 왜 이렇게 이해가 안되니? 아무도이 문제에 대해 알고 있다면, 제발 도와주세요 .... !!! 미리 감사드립니다 ... !!!이미지를 그레이 스케일로 변환하고 사용자 정의 클래스로 저장 BitmapSaver
import flash.display.Bitmap;
import flash.display.Loader;
import fl.controls.Button;
import flash.net.FileReference;
import flash.net.FileFilter;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.utils.ByteArray;
import fl.motion.AdjustColor;
import flash.filters.ColorMatrixFilter;
import com.flashandmath.dg.bitmapUtilities.BitmapSaver;
var imageFilter=new FileFilter("Images", "*.jpg;*.jpeg;*.gif;*.png");
var fileR:FileReference=new FileReference();
fileR.addEventListener(Event.SELECT, selectHandler);
fileR.addEventListener(Event.COMPLETE, completeHandler);
pickbutton.addEventListener(MouseEvent.CLICK,selectImage);
function selectImage(e:MouseEvent):void{
fileR.browse([imageFilter]);
}
function selectHandler(e:Event):void{
trace("selectHandler: "+fileR.name);
fileR.load();
}
function completeHandler(e:Event):void {
trace("completeHandler: " + fileR.name);
var ba:ByteArray=fileR.data;
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaded);
loader.loadBytes(ba);
}
var bm:Bitmap;
function loaded(e:Event):void{
bm = e.currentTarget.loader.content as Bitmap;
addChild(bm);
adjustColor();
}
function adjustColor():void
{
var ac:AdjustColor = new AdjustColor();
ac.brightness = 20;
ac.hue = 0;
ac.saturation = -100;
ac.contrast = 40;
var ar:Array = ac.CalculateFinalFlatArray();
var cl:ColorMatrixFilter = new ColorMatrixFilter(ar);
var filter:Array = new Array(cl);
bm.filters = filter;
var saver:BitmapSaver = new BitmapSaver(bm.bitmapData);
}
또 다른 옵션은 [필터 적용] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#applyFilter())을 BitmapData에 직접 적용하는 것입니다 (예 :'bm.bitmapDataa.applyFilter (bm.bitmapData, new Rectangle (0,0, bm.bitmapData.width, bm.bitmapData.height), 새로운 Point(), cl), ' –
아주 사실! 더 많은 객체를 생성하지 않으므로 더 나은 방법입니다 (원래 비트 맵이 필요하지 않은 경우). 따라서 크기가 약 절반 인 메모리를 사용합니다. –
자유롭게 답을 업데이트하십시오.) –