Применение фильтра размытия к BitmapData - PullRequest
2 голосов
/ 14 мая 2011

Вот код, который я использую для размытия изображения с помощью BitmapData.Функция вызывается при событии Slider_changeHandler(event:Event):void, и значение ползунка передается функции как blurvalue.

Проблема в том, что функция работает, но кажется кумулятивной (если это правильное слово!), То есть предположим, что я сдвинул ее до максимума, а после этого попытался уменьшить размытие, сдвинув его обратно кспереди размытие все еще увеличивается.Как мне заставить это работать, чтобы, когда я буду сдвигать его, размытие увеличивается, а когда я сдвигаю его обратно, размытие уменьшается, а когда ползунок равен 0, размытие не применяется.

            var blur:BlurFilter = new BlurFilter();
            blur.blurX = blurvalue; 
            blur.blurY = blurvalue; 
            blur.quality = BitmapFilterQuality.MEDIUM;
            bitmapdata.applyFilter(bitmapdata,new
                Rectangle(0,0,bitmapdata.width,bitmapdata.height),new Point(0,0),
                blur);
            return bitmapdata;

Ответы [ 2 ]

5 голосов
/ 14 мая 2011

как насчет возврата клона оригинального bitmapData с примененным фильтром?

например,

var result:BitmapData = bitmapdata.clone();
var blur:BlurFilter = new BlurFilter();
blur.blurX = blurvalue; 
blur.blurY = blurvalue; 
blur.quality = BitmapFilterQuality.MEDIUM;
result.applyFilter(result,new
Rectangle(0,0,bitmapdata.width,bitmapdata.height),new Point(0,0),blur);
return result;

Кроме того, если вы используете BlurFilter, вам может понадобиться больший прямоугольник,в зависимости от степени размытия.Для этого вы можете использовать метод generateFilterRect () , чтобы получить прямоугольник правильного размера для фильтра.

0 голосов
/ 15 мая 2011

На вашем месте я бы взял BitmapData и поместил бы его в объект Bitmap, а затем добавил фильтры:

var bitmap:Bitmap = new Bitmap(bitmapData);
var blur:BlurFilter = new BlurFilter();
blur.blurX = blurvalue; 
blur.blurY = blurvalue; 
blur.quality = BitmapFilterQuality.MEDIUM;
bitmap.filters = [blur];

Делая это (обмениваясь массивом фильтров), вы неделая фильтры накопительными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...