This page was saved using jaction on 2006-09-04 8:33:34.
Address: http://flexdocs.kr/docs/flex2/langref/flash/filters/ConvolutionFilter.html
Title: flash.filters.ConvolutionFilter (Flex™ 2 레퍼런스 가이드)  •  Size: 46039
Packageflash.filters
Classpublic class ConvolutionFilter
InheritanceConvolutionFilter Inheritance BitmapFilter Inheritance Object

ConvolutionFilter 클래스를 사용하면, 매트릭스 간직해 필터 효과를 적용할 수 있습니다. 다다미 포함에서는, 입력 이미지내의 픽셀을, 인접하는 픽셀과 조합해, 이미지를 작성합니다. 다다미 포함을 사용하면, 애매하게 해, 엣지 검출, 샤프, 엠보스, 베벨 등, 폭넓은 이미지 효과를 실현할 수 있습니다. 이 필터는, MovieClip, SimpleButton, TextField, Video object등의 DisplayObject 클래스로부터 Inheritance한 표시 object, 및 BitmapData object에 적용할 수 있습니다.

간직해 필터를 작성하려면 , 문장구조법 new ConvolutionFilter() 를 사용합니다. 필터의 사용 방법은, 필터의 적용처 object에 따라서 다릅니다.

표시 object에 필터를 적용하면, object의 cacheAsBitmap property의 값이 true 로 설정됩니다. 모든 필터를 클리어 하면,cacheAsBitmap 는 원의 값에 돌아옵니다.

결과적으로 얻을 수 있는 이미지의 폭 또는 높이가 2880 픽셀을 넘는 경우, 필터는 적용되지 않습니다. 예를 들어, 필터가 적용된 크기의 큰 무비 클립을 줌인 할 때, 결과적으로 얻을 수 있는 이미지가 2880 픽셀의 제한을 넘는 경우는, 필터가 오프가 됩니다.

View the examples

See also

flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
matrix
Flex 에서의 필터의 사용


Public property
 property정의
  alpha : Number
대체 칼라의 알파 투명도의 값입니다.
ConvolutionFilter
  bias : Number
매트릭스 변환의 결과에 가산하는 바이어스량입니다.
ConvolutionFilter
  clamp : Boolean
이미지를 클램프 할 필요가 있을지 어떨지를 나타냅니다.
ConvolutionFilter
  color : uint
소스 이미지의 밖에 있는 픽셀을 값환하는 16 진수의 칼라치입니다.
ConvolutionFilter
 Inheritedconstructor : Object
특정의 object 인스턴스의 클래스 object 또는 constructor    함수에의 참조입니다.
Object
  divisor : Number
매트릭스 변환중에 사용하는 제수입니다.
ConvolutionFilter
  matrix : Array
매트릭스 변환에 사용하는 값의 배열입니다.
ConvolutionFilter
  matrixX : Number
매트릭스의 x 차원 (매트릭스의 렬수)입니다.
ConvolutionFilter
  matrixY : Number
매트릭스의 y 차원 (매트릭스의 행수)입니다.
ConvolutionFilter
  preserveAlpha : Boolean
알파 채널이 필터 효과없이 유지될지 어떨지, 또는 칼라 채널 만이 아니고, 알파 채널에도 간직해 필터가 적용될지 어떨지를 나타냅니다.
ConvolutionFilter
 Inheritedprototype : Object
[static] 클래스 또는 함수 object의 prototype object에의 참조입니다.
Object
Public Methods
 Methods정의
  ConvolutionFilter (matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)
지정된 Parameters로 ConvolutionFilter 인스턴스를 초기화합니다.
ConvolutionFilter
  clone ():BitmapFilter
이 필터 object의 복사를 돌려줍니다.
ConvolutionFilter
 InheritedhasOwnProperty (name:String ):Boolean
object로 지정된 property가 정의되고 있는지 어떤지를 나타냅니다.
Object
 InheritedisPrototypeOf (theClass:Object ):Boolean
Object 클래스의 인스턴스가, Parameters로서 지정된 object의 prototype 체인내에 있을지 어떨지를 나타냅니다.
Object
 InheritedpropertyIsEnumerable (name:String ):Boolean
지정된 property가 존재해, 열거 가능한가 어떤가를 나타냅니다.
Object
 InheritedsetPropertyIsEnumerable (name:String , isEnum:Boolean = true):void
루프 처리에 대한 다이나믹 property의 가용성을 설정합니다.
Object
 InheritedtoString ():String
지정된 object의 string 표현을 돌려줍니다.
Object
 InheritedvalueOf ():Object
지정된 object의 원시적치를 돌려줍니다.
Object
property의 상세
alphaproperty
alpha:Number   [read-write]

대체 칼라의 알파 투명도의 값입니다. 지정할 수 있는 값은 0 ~ 1.0 입니다. 예를 들어,. 25 를 지정하면, 투명도의 값으로 해서 25% 가 설정됩니다.

Implements
    public function get alpha():Number
    public function set alpha(value:Number ):void
biasproperty 
bias:Number   [read-write]

매트릭스 변환의 결과에 가산하는 바이어스량입니다. 바이어스에 의해 각 채널의 칼라치가 증가하기 (위해)때문에, 어두운 색은 밝아집니다. 디폴트치는 0 입니다.

Implements
    public function get bias():Number
    public function set bias(value:Number ):void
clampproperty 
clamp:Boolean   [read-write]

이미지를 클램프 할 필요가 있을지 어떨지를 나타냅니다. true 의 경우, 소스 이미지의 밖에 있는 픽셀에 대해서, 입력 이미지의 각 엣지의 칼라치를 복제한다고 하는 방법으로, 필요에 따라서 경계를 따라 입력 이미지를 확장합니다. false 의 경우는, 다른 색을 사용합니다. 그 색은 color property와 alpha property로 지정합니다. 디폴트치는 true 입니다.

Implements
    public function get clamp():Boolean
    public function set clamp(value:Boolean ):void
colorproperty 
color:uint   [read-write]

소스 이미지의 밖에 있는 픽셀을 값환하는 16 진수의 칼라치입니다. 이것은 알파 성분 없음의 RGB 값입니다. 디폴트는 0 입니다.

Implements
    public function get color():uint
    public function set color(value:uint ):void
divisorproperty 
divisor:Number   [read-write]

매트릭스 변환중에 사용하는 제수입니다. 디폴트치는 1 입니다. 제수가 모든 매트릭스치의 합계와 동일한 경우는, 결과 전체의 칼라 강도가 매끄럽게 됩니다. 값 0 은 무시해, 대신에 디폴트치를 사용합니다.

Implements
    public function get divisor():Number
    public function set divisor(value:Number ):void
matrixproperty 
matrix:Array   [read-write]

매트릭스 변환에 사용하는 값의 배열입니다. 이 배열에 포함되는 항목수는 반드시 matrixX * matrixY 에 동일해집니다.

매트릭스의 다다미 포함은,n × m 매트릭스에 근거하고 있습니다. 입력 이미지내의 특정의 픽셀을 인접하는 픽셀과 조합하는 것에 의해, 새로운 픽셀치를 생성합니다. 결과적으로 얻을 수 있는 픽셀은, 대응하는 소스 픽셀 및 연접하는 픽셀에 매트릭스를 적용하는 것으로 산출됩니다.

3 × 3 의 매트릭스 다다미 포함의 경우, 독립하는 칼라 채널 마다 다음의 식을 사용합니다.


 dst (x, y) = ((src (x-1, y-1) * a0 + src(x, y-1) * a1....
                   src(x, y+1) * a7 + src (x+1, y+1) * a8) / divisor) + bias
 

SSE (Streaming SIMD Extensions : 스트리밍 SIMD 확장)를 제공하는 프로세서로 실행할 경우에 처리가 고속화되는 필터 사양도 있습니다. 간직해 조작이 고속 되는 기준은 다음과 같습니다.

Implements
    public function get matrix():Array
    public function set matrix(value:Array ):void

Throws
TypeError — 배열은, 설정시에 null 로 설정됩니다.
matrixXproperty 
matrixX:Number   [read-write]

매트릭스의 x 차원 (매트릭스의 렬수)입니다. 디폴트치는 0 입니다.

Implements
    public function get matrixX():Number
    public function set matrixX(value:Number ):void
matrixYproperty 
matrixY:Number   [read-write]

매트릭스의 y 차원 (매트릭스의 행수)입니다. 디폴트치는 0 입니다.

Implements
    public function get matrixY():Number
    public function set matrixY(value:Number ):void
preserveAlphaproperty 
preserveAlpha:Boolean   [read-write]

알파 채널이 필터 효과없이 유지될지 어떨지, 또는 칼라 채널 만이 아니고, 알파 채널에도 간직해 필터가 적용될지 어떨지를 나타냅니다. false 인 경우는, 알파 채널을 포함해 모든 채널에 정리해 포함을 적용합니다. true 인 경우는, 다다미 포함을 칼라 채널인 만큼 적용합니다. 디폴트치는 true 입니다.

Implements
    public function get preserveAlpha():Boolean
    public function set preserveAlpha(value:Boolean ):void
constructor    의 상세
ConvolutionFilter()constructor   
public 함수 ConvolutionFilter(matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)

지정된 Parameters로 ConvolutionFilter 인스턴스를 초기화합니다.

Parameters
matrixX:Number (default = 0) — 매트릭스의 x 차원 (매트릭스의 렬수)입니다. 디폴트치는 0 입니다.
 
matrixY:Number (default = 0) — 매트릭스의 y 차원 (매트릭스의 행수)입니다. 디폴트치는 0 입니다.
 
matrix:Array (default = null) — 매트릭스 변환에 사용하는 값의 배열입니다. 이 배열에 포함되는 항목수는 반드시 matrixX * matrixY 에 동일해집니다.
 
divisor:Number (default = 1.0) — 매트릭스 변환중에 사용하는 제수입니다. 디폴트치는 1 입니다. 제수가 모든 매트릭스치의 합계와 동일한 경우는, 결과 전체의 칼라 강도가 균등화됩니다. 값 0 은 무시해, 대신에 디폴트치를 사용합니다.
 
bias:Number (default = 0.0) — 매트릭스 변환의 결과에 가산하는 바이어스입니다. 디폴트치는 0 입니다.
 
preserveAlpha:Boolean (default = true)false 인 경우는, 알파치가 보관 유지되지 않고, 알파 채널을 포함해 모든 채널에 정리해 포함을 적용합니다. true 인 경우는, 다다미 포함을 칼라 채널인 만큼 적용합니다. 디폴트치는 true 입니다.
 
clamp:Boolean (default = true)true 의 경우, 소스 이미지의 밖에 있는 픽셀에 대해서, 입력 이미지의 소정의 엣지의 칼라치를 복제한다고 하는 방법으로, 필요에 따라서 경계를 따라 입력 이미지를 확장합니다. false 의 경우는, 다른 색을 사용합니다. 그 색은 color property와 alpha property로 지정합니다. 디폴트치는 true 입니다.
 
color:uint (default = 0) — 소스 이미지의 밖에 있는 픽셀을 값환하는 16 진수의 칼라치입니다.
 
alpha:Number (default = 0.0) — 대체 칼라의 알파입니다.
Methods의 상세
clone()Methods
public override function clone():BitmapFilter

이 필터 object의 복사를 돌려줍니다.

반환값
BitmapFilter — 원의 ConvolutionMatrixFilter 인스턴스와 property가 모두 같다 새로운 ConvolutionFilter 인스턴스.
Examples

다음의 예에서는, 다양한 간직해 필터를 이미지 파일에 적용합니다. 필터 constructor    은 buildChild() 를 4 회 호출해, 이미지의 4 개의 인스턴스를 로드해 표시합니다. buildChild() 의 각 호출에서는, 인수로서 함수를 취합니다. 이 함수는, 최초의 인스턴스에는 필터를 적용하지 않고, 다른 간직해 필터를 그 이후의 인스턴스에 적용합니다.

buildChild() 함수는 loader 라는 이름의 새로운 Loader object를 작성합니다. buildChild() 를 호출할 때마다, complete 이벤트를 받는 Loader object에 event listener를 아탓치 합니다. 이러한 이벤트는 buildChild() 에게 건네지는 함수에 의해 처리됩니다.

applyBrightness(),applySharpness(), 및 applyOutline() 함수에서는, 다양한 효과를 실현하기 위해서(때문에),matrix 배열에 다양한 값을 사용합니다.

메모 :폭이 약 80 픽셀 이내의 이미지를 사용하면, 최선의 결과를 얻을 수 있습니다. 이미지 파일의 이름과 장소는, url property에 건네주는 값과 일치하고 있을 필요가 있습니다. 예를 들어, 이 예로 url 에게 건네지는 값은 SWF 파일과 같은 디렉토리내에 있는 "Image.jpg" 라는 이름의 이미지 파일을 가리킵니다.


package {
    import flash.display.DisplayObject;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events. *;
    import flash.filters.BitmapFilter;
    import flash.filters.ConvolutionFilter;
    import flash.net.URLRequest;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;

    public class ConvolutionFilterExample extends Sprite {
        private var size:uint = 140;
        private var url:String = "Image.jpg";

        public function ConvolutionFilterExample() {
            buildChild(applyNothing);
            buildChild(applyBrightness);
            buildChild(applySharpness);
            buildChild(applyOutline);
        }

        private function buildChild(loadHandler:Function) :void {
            var loader:Loader = new Loader();
            loader.x = numChildren * size;
            loader.y = size;
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            if(loadHandler ! = null) {
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler);
            }

            var request:URLRequest = new URLRequest(url);
            loader.load(request);
            addChild(loader);
        }

        private function applyNothing(event:Event) :void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            applyLabel(child, "no filter");
        }

        private function applyBrightness(event:Event) :void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            var matrix:Array = [5, 5, 5,
                                5, 0, 5,
                                5, 5, 5];
            applyFilter(child, matrix);
            applyLabel(child, "brightness");
        }

        private function applySharpness(event:Event) :void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            var matrix:Array = [0, -1, 0,
                               -1, 20, -1,
                                0, -1, 0];
            applyFilter(child, matrix);
            applyLabel(child, "sharpness");
        }

        private function applyOutline(event:Event) :void {
            var child:DisplayObject = DisplayObject(event.target.loader);
            var matrix:Array = [-30, 30, 0,
                                -30, 30, 0,
                                -30, 30, 0];
            applyFilter(child, matrix);
            applyLabel(child, "outline");
        }

        private function applyFilter(child:DisplayObject, matrix:Array) :void {
            var matrixX:Number = 3;
            var matrixY:Number = 3;
            var divisor:Number = 9;
            var filter:BitmapFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor);
            var filters:Array = new Array();
            filters.push(filter);
            child.filters = filters;
        }

        private function applyLabel(child:DisplayObject, label:String) :void {
            var tf:TextField = new TextField();
            tf.x = child.x;
            tf.y = child.height;
            tf.autoSize = TextFieldAutoSize.LEFT;
            tf.text = label;
            addChild(tf);
        }

        private function ioErrorHandler(event:IOErrorEvent) :void {
            trace("Unable to load image: " + url);
        }
    }
}






 

코멘트가 추가되었을 경우, 메일로 받기. | 코멘트 리포트

현재의 페이지: http://flexdocs.kr/docs/flex2/langref/flash/filters/ConvolutionFilter.html