ConvolutionFilterについて調べてみたのでメモ.
要しちゃうと隣り合うピクセル通しの色合いに重みを付けて再着色してくれるということ...??
ぼかしだとかシャープだとかエンボスみたいな効果までこれで作り出せちゃう.
コード
import flash.display.BitmapData;
import flash.filters.ConvolutionFilter;
import flash.geom.Matrix;
import mx.controls.NumericStepper;
var image = BitmapData.loadBitmap('image');
var convoFilter = new ConvolutionFilter(5, 5);
var target = this;
// イメージのアタッチ
this.imageLoader_mc.attachBitmap(image, 1);
// ConvolutionFilterの適応
this.initFilter = function() {
convoFilter.matrix = [
matrix11_mc.value, matrix12_mc.value, matrix13_mc.value, matrix14_mc.value, matrix15_mc.value,
matrix21_mc.value, matrix22_mc.value, matrix23_mc.value, matrix24_mc.value, matrix25_mc.value,
matrix31_mc.value, matrix32_mc.value, matrix33_mc.value, matrix34_mc.value, matrix35_mc.value,
matrix41_mc.value, matrix42_mc.value, matrix43_mc.value, matrix44_mc.value, matrix45_mc.value,
matrix51_mc.value, matrix52_mc.value, matrix53_mc.value, matrix54_mc.value, matrix55_mc.value];
convoFilter.divisor = target.divisor_mc.value;
convoFilter.bias = target.offset_mc.value;
target.imageLoader_mc.filters = [convoFilter];
};
// リスナーの設定
var listener = new Object();
listener.change = function(event) {
target.initFilter();
};
for (var i in this) {
if (this[i] instanceof NumericStepper) {
this[i].addEventListener('change', listener);
}
}
参考)
・psyark | いつも心にファイヤーを
・Flash馬鹿一代ブックマーク | ConvolutionFilter
・晴れときどきGIMP | コンボリューション行列
・msdn | .NET Framework 開発者ガイド | 色の変換(IEで見たほうがいい)
trackback for this entry URL:
http://blog.graffiti-web.org/mt/mt-tb.cgi/395