This page was saved using jaction on 2006-09-04 8:33:27.
Address: http://flexdocs.kr/docs/flex2/langref/flash/display/BitmapData.html
Title: flash.display.BitmapData (Flex™ 2 레퍼런스 가이드)  •  Size: 179966
Packageflash.display
Classpublic class BitmapData
InheritanceBitmapData Inheritance Object
ImplementsIBitmapDrawable

BitmapData 클래스를 사용하면, Bitmap object의 데이터 (픽셀)를 처리할 수 있습니다. BitmapData 클래스의 Methods를 사용해, 임의의 크기의 투명 또는 불투명의 비트 맵 이미지를 작성해, 실행시에 다양한 방법으로 조작할 수가 있습니다. 게다가flash.display.Loader 클래스를 사용해 로드 되는 비트 맵 이미지의 BitmapData 에 액세스 할 수도 있습니다.

이 클래스를 사용하면, 비트 맵의 렌더링 처리를 Flash Player 내부 보기 갱신 routine로부터 분리할 수 있습니다. BitmapData object를 직접 조작하는 것으로 복잡한 이미지를 작성할 수 있으므로, 벡터 데이터의 컨텐츠를 연속적으로 재묘화 하는 프레임 단위의 오버헤드를 피할 수가 있습니다.

BitmapData 클래스의 Methods는, (비트 맵 이외 display object에서는 사용 가능한) 필터를 사용해 설정할 수 없는 것 같은 효과를 지원(support)합니다.

BitmapData object에는, 픽셀 데이터의 배열이 포함되어 있습니다. 이 데이터는, 완전하게 불투명한 비트 맵, 또는 알파 채널 데이터를 포함한 투명한 비트 맵을 표현할 수 있습니다. 어느 종류의 BitmapData object도 32 비트 정수의 버퍼로서 보존됩니다. 각 32 비트 정수는, 비트 맵내의 1 개의 픽셀의 property를 결정합니다.

각 32 비트 정수는, 픽셀의 알파 투명도와 빨강 녹청 (ARGB)의 값을 나타내는 4 개의 8 비트 채널치 (0 ~ 255) 의 편성입니다. (ARGB 값에서는, 최상정도 바이트가 알파 채널치를 나타내, 계속되어 적, 초록, 파랑을 나타냅니다. )

이 4 개의 채널 (알파, 적, 록, 청)은,BitmapData.copyChannel() Methods, 또는 DisplacementMapFilter.componentXDisplacementMapFilter.componentY property로 사용하는 경우에 수치로서 나타내집니다. 이러한 수치는, BitmapDataChannel 클래스의 다음의 정수에 의해 나타내집니다.

Bitmap object의 bitmapData property를 사용하면, BitmapData object를 Bitmap object에 관련지을 수가 있습니다.

Graphics.beginBitmapFill() Methods를 사용하면, BitmapData object를 사용해 Graphics object를 전부 칠할 수가 있습니다.

BitmapData object의 최대의 폭과 높이는 2880 픽셀입니다.

BitmapData object의 몇개의 Methods나 property를 호출했을 때에, BitmapData object가 무효인 것이었을 경우 (예를 들어 height == 0 또한 width == 0 의 경우)나, dispose()로 이미 파기된 것이었을 경우는, ArgumentError 에러가 슬로우 됩니다.

View the examples

See also

flash.display.Bitmap.bitmapData
flash.display.Graphics.beginBitmapFill()
flash.display.Loader
비트 맵의 작성과 조작


Public property
 property정의
 Inheritedconstructor : Object
특정의 object 인스턴스의 클래스 object 또는 constructor    함수에의 참조입니다.
Object
  height : int
[read-only] 비트 맵 이미지의 높이 (픽셀 단위)입니다.
BitmapData
 Inheritedprototype : Object
[static] 클래스 또는 함수 object의 prototype object에의 참조입니다.
Object
  rect : Rectangle
[read-only] 비트 맵 이미지의 크기와 위치를 정의하는 구형입니다.
BitmapData
  transparent : Boolean
[read-only] 비트 맵 이미지가 픽셀 단위의 투명도를 지원(support)할지 어떨지를 정의합니다.
BitmapData
  width : int
[read-only] 비트 맵 이미지의 폭 (픽셀 단위)입니다.
BitmapData
Public Methods
 Methods정의
  BitmapData (width:int , height:int , transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
지정된 폭과 높이로 BitmapData object를 작성합니다.
BitmapData
  applyFilter (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , filter:BitmapFilter ):void
소스 이미지와 필터 object를 받아, 필터를 적용해 얻을 수 있는 이미지를 생성합니다.
BitmapData
  clone ():BitmapData
새로운 BitmapData object로서 원의 인스턴스의 클론을 돌려줍니다. 포함되는 비트 맵은 완전히 같은 복사가 됩니다.
BitmapData
  colorTransform (rect:Rectangle , colorTransform:ColorTransform ):void
ColorTransform object를 사용해, 비트 맵 이미지의 특정 area의 칼라치를 조정합니다.
BitmapData
  compare (otherBitmapData:BitmapData ):Object
2 개의 BitmapData object를 비교합니다.
BitmapData
  copyChannel (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , sourceChannel:uint , destChannel:uint ):void
다른 BitmapData object 또는 현재의 BitmapData object의 1 개의 채널의 데이터를, 현재의 BitmapData object의 채널에 전송 합니다.
BitmapData
  copyPixels (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
이미지간의 픽셀 조작 (신장, 회전, 칼라 효과 없음)을 고속으로 실행하는 routine를 제공합니다.
BitmapData
  dispose ():void
BitmapData object의 포함에 사용되는 메모리를 해방합니다.
BitmapData
  draw (source:IBitmapDrawable , matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Flash Player 의 벡터 렌 다라를 사용해,source 표시 object를 비트 맵 이미지상에 묘화 합니다.
BitmapData
  fillRect (rect:Rectangle , color:uint ):void
지정된 ARGB 칼라로 구형 area의 픽셀을 전부 칠합니다.
BitmapData
  floodFill (x:int , y:int , color:uint ):void
(x, y) 좌표를 시점으로서 소정의 색으로 전부 칠하는 것으로, 이미지의 전부 칠해 처리를 실행합니다.
BitmapData
  generateFilterRect (sourceRect:Rectangle , filter:BitmapFilter ):Rectangle
BitmapData object, 소스 구형, 필터 object를 지정해,applyFilter() Methods 호출에 의해 영향을 받는 타겟 구형을 결정합니다.
BitmapData
  getColorBoundsRect (mask:uint , color:uint , findColor:Boolean = true):Rectangle
(findColor Parameters가 true 로 설정되어 있는 경우) 비트 맵 이미지내의 지정된 색의 모든 픽셀을 완전하게 둘러싸는 구형 area를 판별합니다. 또는, (findColor Parameters가 false 로 설정되어 있는 경우) 지정된 색은 아닌 모든 픽셀을 완전하게 둘러싸는 구형 area를 판별합니다.
BitmapData
  getPixel (x:int , y:int ):uint
BitmapData object의 특정 포인트 (x, y)의 RGB 픽셀치를 나타내는 정수를 돌려줍니다.
BitmapData
  getPixel32 (x:int , y:int ):uint
알파 채널 데이터와 RGB 데이터를 포함한 ARGB 칼라치를 돌려줍니다.
BitmapData
  getPixels (rect:Rectangle ):ByteArray
픽셀 데이터의 구형 area로부터 바이트 배열을 생성합니다.
BitmapData
 InheritedhasOwnProperty (name:String ):Boolean
object로 지정된 property가 정의되고 있는지 어떤지를 나타냅니다.
Object
  hitTest (firstPoint:Point , firstAlphaThreshold:uint , secondObject:Object , secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
1 개의 비트 맵 이미지와 포인트, 구형, 또는 다른 비트 맵 이미지와의 사이에 픽셀 레벨의 히트를 검출합니다.
BitmapData
 InheritedisPrototypeOf (theClass:Object ):Boolean
Object 클래스의 인스턴스가, Parameters로서 지정된 object의 prototype 체인내에 있을지 어떨지를 나타냅니다.
Object
  lock ():void
이 BitmapData object가 변경되었을 때에, BitmapData object를 참조하는 모든 object (예를 들어 Bitmap object)가 갱신되지 않게, 이미지를 잠급니다.
BitmapData
  merge (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , redMultiplier:uint , greenMultiplier:uint , blueMultiplier:uint , alphaMultiplier:uint ):void
소스 이미지와 타겟 이미지를 채널 마다 브렌드 합니다.
BitmapData
  noise (randomSeed:int , low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
랜덤 노이즈를 나타내는 픽셀로 이미지를 전부 칠합니다.
BitmapData
  paletteMap (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
최대로 4 개의 칼라 팔레트 데이터 배열 ( 각 채널 마다 1 개의 배열)을 사용해, 이미지내의 칼라 채널치를 매핑 다시 합니다.
BitmapData
  perlinNoise (baseX:Number , baseY:Number , numOctaves:uint , randomSeed:int , stitch:Boolean , fractalNoise:Boolean , channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
Perlin 노이즈 이미지를 생성합니다.
BitmapData
  pixelDissolve (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
소스 이미지로부터 타겟 이미지에의 피크세르디조르브, 또는 같은 이미지를 사용한 피크세르디조르브를 실행합니다.
BitmapData
 InheritedpropertyIsEnumerable (name:String ):Boolean
지정된 property가 존재해, 열거 가능한가 어떤가를 나타냅니다.
Object
  scroll (x:int , y:int ):void
소정의 (x, y) 픽셀량만 이미지를 스크롤 합니다.
BitmapData
  setPixel (x:int , y:int , color:uint ):void
BitmapData object의 1 개의 픽셀을 설정합니다.
BitmapData
  setPixel32 (x:int , y:int , color:uint ):void
BitmapData object의 1 개의 픽셀에 칼라치와 알파 투명도 값을 설정합니다.
BitmapData
  setPixels (rect:Rectangle , inputByteArray:ByteArray ):void
바이트 배열을 픽셀 데이터의 구형 area로 변환합니다.
BitmapData
 InheritedsetPropertyIsEnumerable (name:String , isEnum:Boolean = true):void
루프 처리에 대한 다이나믹 property의 가용성을 설정합니다.
Object
  threshold (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , operation:String , threshold:uint , color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
지정되었고 귀의치와 비교해 이미지내의 픽셀치를 테스트해, 테스트에 적합한 픽셀에 새로운 칼라치를 설정합니다.
BitmapData
 InheritedtoString ():String
지정된 object의 string 표현을 돌려줍니다.
Object
  unlock (changeRect:Rectangle = null):void
이 BitmapData object가 변경되었을 때에, BitmapData object를 참조하는 모든 object (예를 들어 Bitmap object)가 갱신되도록(듯이), 이미지를 락 해제합니다.
BitmapData
 InheritedvalueOf ():Object
지정된 object의 원시적치를 돌려줍니다.
Object
property의 상세
heightproperty
height:int   [read-only]

비트 맵 이미지의 높이 (픽셀 단위)입니다.

Implements
    public function get height():int
rectproperty 
rect:Rectangle   [read-only]

비트 맵 이미지의 크기와 위치를 정의하는 구형입니다. 구형의 상단과 좌단은 0 이 됩니다. 폭과 높이는, BitmapData object의 픽셀의 폭 및 높이로 동일해집니다.

Implements
    public function get rect():Rectangle
transparentproperty 
transparent:Boolean   [read-only]

비트 맵 이미지가 픽셀 단위의 투명도를 지원(support)할지 어떨지를 정의합니다. 이 값을 설정할 수 있는 것은, constructor    의 transparent Parameters에 true 를 건네주는 것에 의해 BitmapData object를 작성하는 경우만입니다. BitmapData object를 작성한 후,transparent property의 값이 true 일지 어떨지를 확인하는 것으로써, 이 object가 픽셀마다의 투명도를 지원(support)할지 어떨지를 검사할 수 있습니다.

Implements
    public function get transparent():Boolean
widthproperty 
width:int   [read-only]

비트 맵 이미지의 폭 (픽셀 단위)입니다.

Implements
    public function get width():int
constructor    의 상세
BitmapData()constructor   
public 함수 BitmapData(width:int , height:int , transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)

지정된 폭과 높이로 BitmapData object를 작성합니다. fillColor Parameters에 값을 지정했을 경우, 비트 맵의 모든 픽셀에 그 색이 설정됩니다.

transparent Parameters에 false 를 건네주지 않는 이상 디폴트에서는 비트 맵이 투명으로서 작성됩니다. 불투명의 비트 맵을 작성한 후, 그것을 투명의 비트 맵으로 변경할 수 없습니다. 불투명의 비트 맵에 포함되는 모든 픽셀은, 24 비트의 칼라 채널 정보만을 사용합니다. 비트 맵을 투명하게 정의했을 경우, 모든 픽셀은, 알파 투명 채널을 포함한 32 비트의 칼라 채널 정보를 사용합니다.

BitmapData object의 최대의 폭과 높이는 2880 픽셀입니다. 폭 또는 높이에 2880 보다 큰 값을 지정하면, 새로운 인스턴스는 작성되지 않습니다.

Parameters
width:int — 비트 맵 이미지의 폭 (픽셀 단위)입니다.
 
height:int — 비트 맵 이미지의 높이 (픽셀 단위)입니다.
 
transparent:Boolean (default = true) — 비트 맵 이미지가 픽셀 단위의 투명도를 지원(support)할지 어떨지를 지정합니다. 디폴트치는 true (투명)입니다. 완전하게 투명한 비트 맵을 작성하려면 ,transparent Parameters의 값을 true 에,fillColor Parameters의 값을 0x00000000 (또는 0)로 설정합니다. transparent property에 false 를 설정하면, 렌더링의 퍼포먼스가 약간 향상하는 일이 있습니다.
 
fillColor:uint (default = 0xFFFFFFFF) — 비트 맵 이미지 area를 전부 칠하는데 사용하는 32 비트 ARGB 칼라치입니다. 디폴트치는 0xFFFFFFFF (흰색)입니다.

Throws
ArgumentError — 폭 또는 높이가 무효입니다 (0 이하 또는 2880 보다 크다).
Methods의 상세
applyFilter()Methods
public function applyFilter(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , filter:BitmapFilter ):void

소스 이미지와 필터 object를 받아, 필터를 적용해 얻을 수 있는 이미지를 생성합니다.

이 Methods는 빌트인 필터 object의 동작에 의존합니다 (이 object는, 입력 소스 구형에 의해 영향을 받는 타겟 구형을 결정합니다).

필터를 적용한 후, 결과적으로 얻을 수 있는 이미지는 입력 이미지보다 커지는 일이 있습니다. 예를 들어, BlurFilter 클래스를 사용해 소스 구형 (50,50,100,100)과 타겟 포인트 (10,10)를 애매하게 하면, 타겟 이미지로 변경되는 area는, 가시노 위해(때문에), (10,10,60,60)보다 커집니다. 이것은,applyFilter() 호출시에 내부에서 발생합니다.

sourceBitmapData Parameters의 sourceRect Parameters가 안쪽 area (200 ●x● 200 의 이미지내의 것 (50,50,100,100) 등)인 경우, 필터는,sourceRect Parameters의 외측에 있는 소스 픽셀을 사용해, 타겟 구형을 생성합니다.

sourceBitmapData Parameters로서 지정된 object와 BitmapData object가 같으면, Flash Player 는 object의 일시 복사를 사용해 필터를 실행합니다. 최적인 퍼포먼스를 얻으려면 , 이러한 상황을 피해 주세요.

Parameters
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
 
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
 
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData 인스턴스) 내의 포인트입니다.
 
filter:BitmapFilter — 필터 적용 처리에 사용되는 필터 object입니다. 각각의 종류의 필터에는, 다음과 같은 요건이 있습니다.
  • BlurFilter — 이 필터는, 투명 또는 불투명한 소스 이미지와 타겟 이미지를 사용할 수 있습니다. 이미지의 포맷이 일치하지 않는 경우, 필터 적용중에 작성되는 소스 이미지의 복사가 타겟 이미지의 포맷에 맞출 수 있습니다.
  • BevelFilter, DropShadowFilter, GlowFilter, ChromeFilter — 이러한 필터의 타겟 이미지는 투명 이미지가 아니면 안됩니다. DropShadowFilter 또는 GlowFilter 를 호출하면, 드롭섀도우 또는 그로의 알파 채널 데이터를 포함한 이미지가 작성됩니다. 드롭섀도우는 타겟 이미지상에 작성되지 않습니다. 이러한 필터를 불투명한 타겟 이미지에 대해서 사용하면, 예외가 슬로우 됩니다 (ActionScript 3.0).
  • ConvolutionFilter — 이 필터는, 투명 또는 불투명한 소스 이미지와 타겟 이미지를 사용할 수 있습니다.
  • ColorMatrixFilter — 이 필터는, 투명 또는 불투명한 소스 이미지와 타겟 이미지를 사용할 수 있습니다.
  • DisplacementMapFilter — 이 필터는, 투명 또는 불투명한 소스 이미지와 타겟 이미지를 사용할 수 있습니다만, 이미지의 형식은 소스와 타겟으로 같은 필요가 있습니다.

Throws
TypeError — sourceBitmapData, sourceRect, destPoint, 또는 filter 가 null 입니다.
 
IllegalOperationError — BitmapData object의 투명도는, 필터 조작과 호환성이 없습니다.

See also


Example
다음의 예는, BitmapData 인스턴스에 애매하게 해 필터를 적용하는 방법을 나타내고 있습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();
bmd.applyFilter(bmd, rect, pt, filter);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

clone()Methods 
public function clone():BitmapData

새로운 BitmapData object로서 원의 인스턴스의 클론을 돌려줍니다. 포함되는 비트 맵은 완전히 같은 복사가 됩니다.

반환값
BitmapData — 원의 object와 동일한 새로운 BitmapData object입니다.

Example
다음의 예는, BitmapData 인스턴스의 클론을 작성하는 방법을 나타내고 있습니다. 게다가 클론 된 BitmapData 인스턴스를 변경해도, 원의 인스턴스는 변경되지 않습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(100, 80, true, 0x00000000);
var bmd2:BitmapData = bmd1.clone();

bmd1.setPixel32(1, 1, 0xFFFFFFFF);

trace(bmd1.getPixel32(1, 1));        // 4294967295 == 0xFFFFFFFF
trace(bmd2.getPixel32(1, 1));        // 0

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 110;

colorTransform()Methods 
public function colorTransform(rect:Rectangle , colorTransform:ColorTransform ):void

ColorTransform object를 사용해, 비트 맵 이미지의 특정 area의 칼라치를 조정합니다. 구형이 비트 맵 이미지의 경계와 일치하는 경우, 이 Methods는 이미지 전체의 칼라치를 변환합니다.

Parameters
rect:Rectangle — ColorTransform object가 적용되는 이미지의 area를 정의하는 Rectangle object입니다.
 
colorTransform:ColorTransform — 적용되는 칼라 변환치를 기술하는 ColorTransform object입니다.

Throws
TypeError — rect 또는 colorTransform 이 null 입니다.

See also


Example
다음의 예는, 칼라 변환을 BitmapData object의 왼쪽 반 (구형)에 적용하는 방법을 BitmapData object의 하반신의 구형으로 바꿔 넣습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000);

var cTransform:ColorTransform = new ColorTransform();
cTransform.alphaMultiplier = 0.5
var rect:Rectangle = new Rectangle(0, 0, 40, 30);
bmd.colorTransform(rect, cTransform);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

compare()Methods 
public function compare(otherBitmapData:BitmapData ):Object

2 개의 BitmapData object를 비교합니다. 2 개의 BitmapData object의 크기 (폭과 높이)가 같으면, Methods는 새로운 BitmapData object를 돌려줍니다. 이 새로운 object의 각 픽셀은, 2 개의 소스 object의 픽셀간의 「차분」입니다.

예를 들어, 다음과 같은 2 개의 BitmapData object가 있다고 합니다.

  var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF0000);
  var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
  var diffBmpData:BitmapData = bmd1.compare(bmd2);
  

메모: 2 개의 BitmapData object를 전부 칠하기 위해서(때문에) 사용되는 각각의 색의 RGB 값는 조금 다릅니다 (0xFF0000 로 0xFFAA00). compare() Methods의 결과로서 새로운 BitmapData object가 생성되어 그 각 픽셀은 2 개의 비트 맵간의 RGB 값의 차분을 나타냅니다.

다음과 같은 2 개의 BitmapData object가 있다고 합니다. 양자의 RGB 칼라는 같습니다만, 알파치는 다릅니다.

  var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
  var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
  var diffBmpData:BitmapData = bmd1.compare(bmd2);
  

compare() Methods의 결과로서 새로운 BitmapData object가 생성되어 그 각 픽셀은 2 개의 비트 맵간의 알파치의 차분을 나타냅니다.

BitmapData object가 동일한 (폭과 높이, 및 픽셀치가 같은) 경우, 이 Methods는 수치 0 을 돌려줍니다.

BitmapData object의 폭이 동일하지 않은 경우, 높이가 같으면, 이 Methods는 수치 -3 를 돌려줍니다.

BitmapData object의 높이가 동일하지 않은 경우, 폭이 같으면, 이 Methods는 수치 -4 를 돌려줍니다.

다음의 예에서는, 폭이 다른 2 개의 Bitmap object를 비교합니다 (각각의 폭은 50 으로 60).

  var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000);
  var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00);
  trace(bmd1.compare(bmd2)); // -3
  
Parameters
otherBitmapData:BitmapData — 소스 BitmapData object라고 비교되는 BitmapData object입니다.

반환값
Object — 2 개의 BitmapData object의 크기 (폭과 높이)가 같으면, 이 Methods는, 2 개의 object간의 차분을 나타내는 새로운 BitmapData object를 돌려줍니다 (주된 설명의 항을 참조해 주세요). 2 개의 BitmapData object가 동일한 경우, 이 Methods는 수치 0 을 돌려줍니다. BitmapData object의 폭이 동일하지 않은 경우, Methods는 수치 -3 를 돌려줍니다. BitmapData object의 높이가 동일하지 않은 경우, Methods는 수치 -4 를 돌려줍니다.

Throws
TypeError — otherBitmapData 이 null 입니다.

Example
다음의 예에서는, 같은 크기의 2 개의 BitmapData object를 비교한 결과이다 픽셀치가 BitmapData object안에 포함됩니다.

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2));
var diffValue:String = diffBmpData.getPixel32(1, 1). toString(16);
trace (diffValue); // 33ffffff

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 60;

copyChannel()Methods 
public function copyChannel(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , sourceChannel:uint , destChannel:uint ):void

다른 BitmapData object 또는 현재의 BitmapData object의 1 개의 채널의 데이터를, 현재의 BitmapData object의 채널에 전송 합니다. 타겟 BitmapData object내의 그 외의 체르의 데이터는 모두 유지됩니다.

소스 채널의 값과 타겟 채널의 값은, 다음의 어느 쪽인가에 됩니다.

Parameters
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData object를 참조할 수도 있습니다.
 
sourceRect:Rectangle — 소스측의 Rectangle object입니다. 비트 맵내의 것보다 작은 area의 채널 데이터만을 복사하려면 , BitmapData object의 크기 전체보다 작은 소스 구형을 지정합니다.
 
destPoint:Point — 새로운 채널 데이터가 배치되는 구형 area의 좌상구석을 나타내는 타겟 Point object입니다. 어느 특정의 area의 채널 데이터만을 타겟 이미지내의 다른 area에 복사하려면 , (0,0) 이외의 포인트를 지정합니다.
 
sourceChannel:uint — 소스 채널입니다. BitmapDataChannel 클래스의 값 (BitmapDataChannel.RED,BitmapDataChannel.BLUE,BitmapDataChannel.GREEN,BitmapDataChannel.ALPHA)을 사용합니다.
 
destChannel:uint — 타겟 채널입니다. BitmapDataChannel 클래스의 값 (BitmapDataChannel.RED,BitmapDataChannel.BLUE,BitmapDataChannel.GREEN,BitmapDataChannel.ALPHA)을 사용합니다.

Throws
TypeError — sourceBitmapData, sourceRect, 또는 destPoint 가 null 입니다.

See also


Example
다음의 예는, BitmapData object내의 빨강 채널을, 20 x 20 픽셀 area에 걸쳐서 object 자신의 파랑 채널에 복사하는 방법을 나타내고 있습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00FF0000);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE);

var bm:Bitmap = new Bitmap(bmd);
this.addChild(bm);

copyPixels()Methods 
public function copyPixels(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void

이미지간의 픽셀 조작 (신장, 회전, 칼라 효과 없음)을 고속으로 실행하는 routine를 제공합니다. 이 Methods는, 소스 이미지의 구형 area를, 타겟 BitmapData object의 타겟 포인트에 있는 같은 크기의 구형 area에 복사합니다.

alphaBitmap Parameters와 alphaPoint Parameters를 포함하면, 2 번째의 이미지를 소스 이미지의 알파 소스로서 사용할 수 있습니다. 소스 이미지에 알파 데이터가 있는 경우, 2 개의 알파 데이터 세트를 사용해, 소스 이미지의 픽셀이 타겟 이미지상에 합성됩니다. alphaPoint Parameters는, 소스 구형의 좌상구석에 대응하는, 알파 이미지내의 포인트입니다. 소스 이미지와 알파 이미지가 사귀지 않는 부분의 픽셀은, 타겟 이미지에 복사되지 않습니다.

mergeAlpha property는, 투명한 이미지가 다른 투명한 이미지에 복사될 때 알파 채널이 사용될지 어떨지를 제어합니다. (알파를 사용하지 않고 ) 픽셀을 복사하려면 ,mergeAlpha property를 false 로 설정하면, 모든 픽셀이 소스로부터 타겟으로 복사됩니다. mergeAlpha property의 디폴트치는 true 입니다.

Parameters
sourceBitmapData:BitmapData — 픽셀의 복사원이 되는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData 인스턴스로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
 
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
 
destPoint:Point — 타겟 포인트입니다. 새로운 픽셀이 배치되는 구형 area의 좌상구석을 나타냅니다.
 
alphaBitmapData:BitmapData (default = null) — 제 2 의 알파 BitmapData object 소스입니다.
 
alphaPoint:Point (default = null) — 알파 BitmapData object 소스내의 포인트입니다. sourceRect Parameters의 좌상구석에 대응합니다.
 
mergeAlpha:Boolean (default = false) — 알파 채널을 사용하려면 , 값을 true 로 설정합니다. 알파 채널을 사용하지 않고 픽셀을 복사하려면 , 값을 false 로 설정합니다.

Throws
TypeError — sourceBitmapData, sourceRect 또는 destPoint 가 null 입니다.

Example
다음의 예는, 1 개의 BitmapData object내의 20 x 20 픽셀 area의 픽셀을 다른 BitmapData object에 복사하는 방법을 나타내고 있습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(40, 40, false, 0x000000FF);
var bmd2:BitmapData = new BitmapData(80, 40, false, 0x0000CC44);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd2.copyPixels(bmd1, rect, pt);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 50;

dispose()Methods 
public function dispose():void

BitmapData object의 포함에 사용되는 메모리를 해방합니다.

dispose() Methods를 이미지에 대해서 호출하면, 이미지의 폭과 높이가 제로로 설정됩니다. 그 이후, 이 BitmapData 인스턴스의 Methods나 property를 호출하면 실패해, 예외가 슬로우 됩니다.


Example
다음의 예는,dispose() Methods의 호출 후에 BitmapData object의 Methods를 호출했을 경우의 효과를 나타내고 있습니다 (예외가 슬로우 됩니다)
import flash.display.BitmapData;

var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF);
trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFF

myBitmapData.dispose();
try {
    trace(myBitmapData.getPixel(1, 1));
} catch (error:Error) {
    trace(error); // ArgumentError
}

draw()Methods 
public function draw(source:IBitmapDrawable , matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void

Flash Player 의 벡터 렌 다라를 사용해,source 표시 object를 비트 맵 이미지상에 묘화 합니다. matrix,colorTransform,blendMode, 및 타겟 clipRect Parameters를 지정하는 것으로써, 렌더링의 실행 방법을 제어할 수 있습니다. 게다가 필요에 따라서, 확대·축소시에 비트 맵의 스무딩을 실시할지 어떨지를 지정할 수도 있습니다 (이것은 소스 object가 BitmapData object의 경우에게만 가능합니다).

이 Methods는, authoring tool 인터페이스에 대해 object에 대해서 표준 벡터 렌 다라를 사용해 object를 묘화 하는 방법으로 직접 대응합니다.

소스 표시 object는, 이 호출로 적용되는 변환을 사용하지 않습니다. 프로그램 라이브러리나 파일안에 존재하는 것으로서 다루어져 매트릭스 변환, 칼라 변환, 브렌드 모드는 없습니다. 변환 property를 사용해 (무비 클립등의) 표시 object를 묘화 하려면 , BitmapData object를 사용하는 Bitmap object의 transform property에 transform property object를 복사할 수가 있습니다.

시큐러티상의 주의 사항:source object 및 (Sprite 또는 MovieClip object의) 모든 child object는, 호출원과 같은 도메인에 속하는지,Security.allowDomain() Methods 호출 후에 호출해 원으로부터 액세스 할 수 있는 SWF 파일에 포함되지 않으면 안됩니다. 이러한 조건이 채워지지 않은 경우,draw() Methods는 아무것도 묘화 하지 않습니다.

Parameters
source:IBitmapDrawable — BitmapData object에 묘화 되는 표시 object 또는 BitmapData object입니다. (DisplayObject 및 BitmapData 클래스는 IBitmapDrawable 인터페이스를 Implements하고 있습니다).
 
matrix:Matrix (default = null) — 비트 맵의 좌표를 확대·축소, 회전, 또는 변환하기 위해서 사용되는 Matrix object입니다. 매트릭스 변환을 이미지에 적용하고 싶지 않은 경우는, (디폴트 new Matrix() constructor    을 사용해 작성된다) 단위 매트릭스에 이 Parameters를 설정하는지,null 값를 건네주세요.
 
colorTransform:ColorTransform (default = null) — 비트 맵의 칼라치를 조정하기 위해서 사용하는 ColorTransform object입니다. object가 제공되지 않는 경우, 비트 맵 이미지의 칼라는 변환되지 않습니다. 이 Parameters를 건네줄 필요가 있지만, 이미지를 변환하고 싶지 않은 경우, 이 Parameters를, 디폴트의 new ColorTransform() constructor    을 사용해 작성되는 ColorTransform object로 설정합니다.
 
blendMode:String (default = null) — 결과적으로 생성되는 비트 맵에 적용되는 브렌드 모드를 지정하는, flash.display.BlendMode 클래스의 string치입니다.
 
clipRect:Rectangle (default = null) — 묘화 하는 소스 object의 area를 정의하는 구형 object입니다. 이 값을 지정하지 않는 경우, 클리핑은 발생하지 않고, 소스 object 전체가 묘화 됩니다.
 
smoothing:Boolean (default = false) — 확대·축소시에 BitmapData object의 스무딩을 실시할지 어떨지를 결정하는 불리언 값입니다.

Throws
ArgumentError source Parameters가, BitmapData 또는 DisplayObject object가 아닙니다.
 
SecurityError source object, 및 (Sprite 또는 MovieClip object의) 모든 child object가 호출해 원과 같은 도메인에 속하지 않은지,Security.allowDomain() Methods 호출 후에 호출해 원으로부터 액세스 할 수 있는 SWF 파일에 포함되어 있지 않습니다.
 
ArgumentError — source 가 null 인지, 유효한 IBitmapDrawable object가 아닙니다.

See also


Example
다음의 예는, TextField object를 BitmapData object에 묘화 하는 방법을 나타내고 있습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.text.TextField;

var tf:TextField = new TextField();
tf.text = "bitmap text";

var myBitmapData:BitmapData = new BitmapData(80, 20);
myBitmapData.draw(tf);
var bmp:Bitmap = new Bitmap(myBitmapData);
this.addChild(bmp);

fillRect()Methods 
public function fillRect(rect:Rectangle , color:uint ):void

지정된 ARGB 칼라로 구형 area의 픽셀을 전부 칠합니다.

Parameters
rect:Rectangle — 전부 칠하는 구형 area입니다.
 
color:uint — area를 전부 칠하기 (위해)때문에 사용되는 ARGB 칼라치입니다. ARGB 칼라치는 통상, 16 진수 형식 (예를 들어, 0xFF336699)에서 지정합니다.

Throws
TypeError — rect 가 null 입니다.

See also


Example
다음의 예는 BitmapData object의 구형 area를 파랑으로 전부 칠하는 방법을 나타내고 있습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x0000FF);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);

floodFill()Methods 
public function floodFill(x:int , y:int , color:uint ):void

(x, y) 좌표를 시점으로서 소정의 색으로 전부 칠하는 것으로, 이미지의 전부 칠해 처리를 실행합니다. floodFill() Methods는, 각종의 paint 프로그램의 물통 툴과 같은 것입니다. color 는, 알파 정보와 칼라 정보를 포함한 ARGB 칼라입니다.

Parameters
x:int — 이미지의 x 좌표입니다.
 
y:int — 이미지의 y 좌표입니다.
 
color:uint — 칠로서 사용하는 ARGB 칼라입니다.

Example
다음의 예는, BitmapData object의 1 area를 전부 칠하는 방법을 나타내고 있습니다. 이 area는 포인트 (10, 10) 로 정의되고 있는 픽셀을 둘러싸, 모든 칼라는 이 포인트와 같은 색 (적색) (이)가 되어 있습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x000000FF);
rect = new Rectangle(15, 15, 25, 25);
myBitmapData.fillRect(rect, 0x000000FF);

myBitmapData.floodFill(10, 10, 0x00FF0000);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);

generateFilterRect()Methods 
public function generateFilterRect(sourceRect:Rectangle , filter:BitmapFilter ):Rectangle

BitmapData object, 소스 구형, 필터 object를 지정해,applyFilter() Methods 호출에 의해 영향을 받는 타겟 구형을 결정합니다.

예를 들어, 애매하게 해 필터는 통상, 원의 이미지의 크기보다 큰 area에 영향을 줍니다. 디폴트의 BlurFilter 인스턴스 (blurX = blurY = 4)에 의해 필터가 적용되는 100 ●x● 200 픽셀의 이미지는 (-2,-2, 104,204) 이라고 하는 타겟 구형을 생성합니다. generateFilterRect() Methods를 사용하면, 이 타겟 구형의 크기를 미리 알 수 있으므로, 필터 처리전에 타겟 이미지를 적절한 크기로 할 수 있습니다.

몇개의 필터는, 소스 이미지의 크기에 근거해 타겟 구형을 클리핑 합니다. 예를 들어, 안쪽의 DropShadow 는, 소스 이미지보다 큰 결과를 생성하지 않습니다. 이 API 에서는, 소스 rect Parameters는 아니고, BitmapData object를 소스의 경계로서 사용합니다.

Parameters
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
 
filter:BitmapFilter — 타겟 구형을 산출하기 위해서 사용하는 필터 object입니다.

반환값
Rectangle — 이미지,sourceRect Parameters, 및 필터를 사용해 산출되는 타겟 구형입니다.

Throws
TypeError — sourceRect 또는 filter 가 null 입니다.

Example
다음의 예는,generateFilterRect() Methods를 사용하는 것으로써, 애매하게 해 필터의 결과가 차지하는 구형 area를 판별하는 방법을 나타내고 있습니다. ▼generateFilterRect() ▼ Methods의 결과는,trace() 함수에 의해 출력됩니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();

trace(bmd.generateFilterRect(rect, filter));
// (x=8, y=8, w=44, h=14)

bmd.applyFilter(bmd, rect, pt, filter);
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
generateFilterRect() Methods는 필터를 적용하지 않습니다. 필터를 적용하려면 applyFilter() Methods를 호출해 주세요.

getColorBoundsRect()Methods 
public function getColorBoundsRect(mask:uint , color:uint , findColor:Boolean = true):Rectangle

(findColor Parameters가 true 로 설정되어 있는 경우) 비트 맵 이미지내의 지정된 색의 모든 픽셀을 완전하게 둘러싸는 구형 area를 판별합니다. 또는, (findColor Parameters가 false 로 설정되어 있는 경우) 지정된 색은 아닌 모든 픽셀을 완전하게 둘러싸는 구형 area를 판별합니다.

예를 들어, 어느 소스 이미지로, 0 이외의 알파 채널을 포함한 이미지의 구형을 판별하려면 , Parameters로서 {mask: 0xFF000000, color: 0x00000000} 를 건네줍니다. findColor Parameters가 true 로 설정되어 있는 경우,(value & mask) == color 인 픽셀의 경계를 찾아내기 위해서(때문에) 이미지 전체가 검색됩니다 (value 는 픽셀의 칼라치). findColor Parameters가 false 로 설정되어 있는 경우,(value & mask) ! = color 인 픽셀의 경계를 찾아내기 위해서(때문에) 이미지 전체가 검색됩니다 (value 는 픽셀의 칼라치). 이미지의 주위의 공백을 판별하려면 , 공백 이외의 픽셀의 경계를 찾아내기 위해서(때문에),{mask: 0xFFFFFFFF, color: 0xFFFFFFFF} 를 건네주세요.

Parameters
mask:uint — 대상이 되는 ARGB 칼라의 비트를 지정하는 16 진수치입니다. 칼라치는,& (비트 단위의 논리적 (AND)) 연산자를 사용해, 이 16 진수치와 조합할 수 있습니다.
 
color:uint — 16 진수치입니다. (findColortrue 로 설정되어 있는 경우는) 일치해야 할 ARGB 칼라, (findColorfalse 로 설정되어 있는 경우는) 일치해야 할이 아닌 ARGB 칼라를 각각 지정합니다.
 
findColor:Boolean (default = true) — 값가 true 로 설정되었을 경우, 이미지내의 칼라치의 경계를 돌려줍니다. 값이 false 로 설정되었을 경우, 이미지내의 지정된 칼라가 존재하지 않는 area의 경계를 돌려줍니다.

반환값
Rectangle — 지정된 색인 이미지의 area입니다.

Example
다음의 예에서는, 상반 분의 픽셀이 빨강인 BitmapData object를 작성합니다. 그 후, getColorBoundsRect() Methods를 호출해, 빨강 (0xFF0000)의 픽셀로부터 되는 구형을 판별합니다. 게다가 (findColor Parameters를 false 로 설정해) 같은 Methods를 호출해, 빨강이 아닌 픽셀로부터 되는 구형을 판별합니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF);
var rect:Rectangle = new Rectangle(0, 0, 80, 20);
bmd.fillRect(rect, 0xFF0000);

var mask:uint = 0xFFFFFF; 
var color:uint = 0xFF0000;  
var redBounds:Rectangle = bmd.getColorBoundsRect(mask, color, true);
trace(redBounds); // (x=0, y=0, w=80, h=20)

var notRedBounds:Rectangle = bmd.getColorBoundsRect(mask, color, false);
trace(notRedBounds); // (x=0, y=20, w=80, h=20)

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

getPixel()Methods 
public function getPixel(x:int , y:int ):uint

BitmapData object의 특정 포인트 (x, y)의 RGB 픽셀치를 나타내는 정수를 돌려줍니다. getPixel() Methods는, 곱셈되어 있지 않은 픽셀치를 돌려줍니다. 알파 정보는 돌려주지 않습니다.

BitmapData object내의 모든 픽셀은, 곱셈이 끝난 칼라치로서 보존됩니다. 곱셈이 끝난 이미지 픽셀은, 알파 데이터가 이미 곱셈된 적, 초록, 파랑의 각 칼라 채널치를 보관 유지합니다. 예를 들어, 알파치가 0 의 경우, 곱셈되어 있지 않은 값 (와)는 관계없는 것으로, RGB 채널의 값도 0 이 됩니다. 이와 같이 데이터가 없어지면, 처리의 실행시에 문제가 생기는 일이 있습니다. BitmapData 의 모든 Methods는, 곱셈되어 있지 않은 값을 받거나 돌려주거나 합니다. 픽셀의 내부 표현은, 값으로 해서 돌려주어지기 전에, 곱셈이 끝난 상태로부터 비곱셈에 변환됩니다. 설정 처리때는, 픽셀치가 사전에 곱셈되고 나서, 생의 이미지 픽셀이 설정됩니다.

Parameters
x:int — 픽셀의 x 좌표.
 
y:int — 픽셀의 y 좌표.

반환값
uint — RGB 픽셀치를 나타내는 수치. (x, y) 좌표가 이미지 경계의 외측인 경우, Methods는 0 을 돌려줍니다. 비트 맵이 투명하지 않게 불투명으로서 작성되었을 경우, 지정된 포인트가 이미지 경계의 안쪽이면, Methods는 에러 코드 -1 를 돌려줍니다.

See also


Example
다음의 예에서는, 빨강으로 전부 칠해진 BitmapData object를 작성한 후, getPixel() Methods를 사용해 좌상의 픽셀의 칼라치를 판별합니다.
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000);

var pixelValue:uint = bmd.getPixel(1, 1);
trace(pixelValue.toString(16)); // ff0000;

getPixel32()Methods 
public function getPixel32(x:int , y:int ):uint

알파 채널 데이터와 RGB 데이터를 포함한 ARGB 칼라치를 돌려줍니다. 이 Methods는 getPixel() Methods와 닮아 있습니다만,getPixel() Methods는 알파 채널 데이터가 없는 RGB 칼라를 돌려줍니다.

BitmapData object내의 모든 픽셀은, 곱셈이 끝난 칼라치로서 보존됩니다. 곱셈이 끝난 이미지 픽셀은, 알파 데이터가 이미 곱셈된 적, 초록, 파랑의 각 칼라 채널치를 보관 유지합니다. 예를 들어, 알파치가 0 의 경우, 곱셈되어 있지 않은 값 (와)는 관계없는 것으로, RGB 채널의 값도 0 이 됩니다. 이와 같이 데이터가 없어지면, 처리의 실행시에 문제가 생기는 일이 있습니다. BitmapData 의 모든 Methods는, 곱셈되어 있지 않은 값을 받거나 돌려주거나 합니다. 픽셀의 내부 표현은, 값으로 해서 돌려주어지기 전에, 곱셈이 끝난 상태로부터 비곱셈에 변환됩니다. 설정 처리때는, 픽셀치가 사전에 곱셈되고 나서, 생의 이미지 픽셀이 설정됩니다.

Parameters
x:int — 픽셀의 x 좌표.
 
y:int — 픽셀의 y 좌표.

반환값
uint — ARGB 픽셀치를 나타내는 수치. (x, y) 좌표가 이미지의 경계외인 경우는, 0 을 돌려줍니다.

See also


Example
다음의 예에서는, 1 개의 색으로 전부 칠해진 BitmapData object를 작성한 후, getPixel32() Methods를 사용해 좌상의 픽셀의 칼라치를 판별합니다. 게다가 각각의 칼라 성분 (알파, 적, 록, 청)에 대응하는 16 진수치를 판별합니다.
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC);

var pixelValue:uint = bmd.getPixel32(1, 1);
var alpha:uint = pixelValue >> 24 & 0xFF;
var red:uint = pixelValue >> 16 & 0xFF;
var green:uint = pixelValue >> 8 & 0xFF;
var blue:uint = pixelValue & 0xFF;

trace(alpha.toString(16)); // ff
trace(red.toString(16)); // 44
trace(green.toString(16)); // aa
trace(blue.toString(16)); // cc

getPixels()Methods 
public function getPixels(rect:Rectangle ):ByteArray

픽셀 데이터의 구형 area로부터 바이트 배열을 생성합니다. 각 픽셀 마다, 부호 없음 정수 (32 비트의 곱셈되지 않는 픽셀치)를 바이트 배열에 기입합니다.

Parameters
rect:Rectangle — 현재의 BitmapData object내의 구형 area입니다.

반환값
ByteArray — 특정의 구형내의 픽셀을 나타내는 ByteArray 입니다.

Throws
TypeError — rect 가 null 입니다.

See also


Example
다음의 예에서는, 랜덤 노이즈의 픽셀로 전부 칠해진 BitmapData object를 작성한 후, getPixels() Methods를 사용해, ByteArray object를 BitmapData object의 픽셀치로 전부 칠합니다.
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;

var bmd:BitmapData = new BitmapData(80, 40, true);
var seed:int = int(Math.random() * int.MAX_VALUE);
bmd.noise(seed);

var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
var pixels:ByteArray = bmd.getPixels(bounds);

hitTest()Methods 
public function hitTest(firstPoint:Point , firstAlphaThreshold:uint , secondObject:Object , secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean

1 개의 비트 맵 이미지와 포인트, 구형, 또는 다른 비트 맵 이미지와의 사이에 픽셀 레벨의 히트를 검출합니다. 히트 테스트때, 어느 쪽의 object의 변환 (신축, 회전등)도 고려되지 않습니다.

이미지가 불투명한 경우, 이 Methods에서는 완전하게 불투명한 구형으로 간주해집니다. 투과성을 고려하는 픽셀 레벨의 히트 테스트를 실시하려면 , 양쪽 모두의 이미지와도 투명하지 않으면 안됩니다. 2 개의 투명한 이미지를 테스트할 때, 알파 해 귀의치 Parameters는, 알파 채널치 (0 ~ 255)가 몇개이면 불투명으로 간주하는지를 제어합니다.

Parameters
firstPoint:Point — 임의의 좌표 공간에 있어서의 BitmapData 이미지의 좌상구석의 위치입니다. 같은 좌표 공간을 사용해 secondBitmapPoint Parameters가 정의됩니다.
 
firstAlphaThreshold:uint — 이 히트 테스트로 불투명으로 간주해지는 알파 채널의 최대치입니다.
 
secondObject:Object — Rectangle, Point, Bitmap, 또는 BitmapData object입니다.
 
secondBitmapDataPoint:Point (default = null) — 2 번째의 BitmapData object내의 픽셀 위치를 정의하는 포인트입니다. 이 Parameters는,secondObject 의 값이 BitmapData object인 경우에게만 사용합니다.
 
secondAlphaThreshold:uint (default = 1) — 2 번째의 BitmapData object내에서 불투명하다라고 보이는 알파 채널의 최대치입니다. 이 Parameters는,secondObject 의 값이 BitmapData object로, 양쪽 모두의 BitmapData object가 투명한 경우에게만 사용합니다.

반환값
Boolean — 히트가 발생하는 경우는 true, 그렇지 않은 경우는 false 입니다.

Throws
ArgumentError secondObject Parameters가, Point, Rectangle, Bitmap, 또는 BitmapData object가 아닙니다.
 
TypeError — firstPoint 가 null 입니다.

Example
다음의 예에서는, 구형 area (20, 20, 40, 40)에서만 불투명한 BitmapData object를 작성한 후, secondObject 에 Point object를 지정해 hitTest() Methods를 호출합니다. 최초의 호출에서는, Point object가 (불투명하지 않다) BitmapData object의 좌상구석을 정의해, 2 번째의 호출에서는, Point object가 (불투명한) BitmapData object의 중앙을 정의합니다.
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000);
var rect:Rectangle = new Rectangle(20, 20, 40, 40);
bmd1.fillRect(rect, 0xFF0000FF);

var pt1:Point = new Point(1, 1);
trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false
var pt2:Point = new Point(40, 40);
trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true

lock()Methods 
public function lock():void

이 BitmapData object가 변경되었을 때에, BitmapData object를 참조하는 모든 object (예를 들어 Bitmap object)가 갱신되지 않게, 이미지를 잠급니다. 퍼포먼스를 향상시키려면 ,setPixel() Methods 또는 setPixel32() Methods를 몇번이나 호출하는 전후에, 이 Methods를 unlock() Methods와 함께 사용해 주세요.

See also


Example
다음의 예로 작성되는 BitmapData object는, Bitmap object picturebitmapData property에 근거하고 있습니다. 그 후,lock() Methods를 호출한 다음에, BitmapData object를 변경한다 복잡한 custom 함수 complexTransformation() 를 호출합니다. (picture object와 complexTransformation() 함수는 이 예에서는 정의되지 않습니다. ) 비록 complexTransformation() 함수가 picture object의 bitmapData property를 갱신했을 경우에서도,unlock() Methods가 bitmapData object에 대해서 불려 갈 때까지는, 변경 내용이 반영되지 않습니다.
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;

merge()Methods 
public function merge(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , redMultiplier:uint , greenMultiplier:uint , blueMultiplier:uint , alphaMultiplier:uint ):void

소스 이미지와 타겟 이미지를 채널 마다 브렌드 합니다. 채널 마다 다음의 식을 사용합니다.

new red dest = (red source * redMultiplier) + (red dest * (256 - redMultiplier) / 256;

redMultiplier 값,greenMultiplier 값,blueMultiplier 값, 및 alphaMultiplier 값는, 각각의 칼라 채널의 승수입니다. 유효한 범위는 0 ~ 256 입니다.

Parameters
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData object를 참조할 수도 있습니다.
 
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
 
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData 인스턴스) 내의 포인트입니다.
 
redMultiplier:uint — 빨강 채널치에 곱셈하는 수치입니다.
 
greenMultiplier:uint — 초록 채널치에 곱셈하는 수치입니다.
 
blueMultiplier:uint — 파랑 채널치에 곱셈하는 수치입니다.
 
alphaMultiplier:uint — 알파 투명도의 값에 곱셈하는 수치입니다.

Throws
TypeError — sourceBitmapData, sourceRect, 또는 destPoint 가 null 입니다.

Example
다음의 예에서는, 2 개의 BitmapData object를 작성합니다. 어느 쪽의 크기도 100 x 80 픽셀입니다. 최초의 object는 초록, 2 번째의 object는 빨강으로 각각 전부 칠해집니다. 이 코드는 merge() Methods를 호출해, 2 번째의 BitmapData 픽셀을 최초의 BitmapData object의 지정된 구형 area에게만 결합합니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(100, 80, true, 0xFF00FF00);
var bmd2:BitmapData = new BitmapData(100, 80, true, 0xFFFF0000);
var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(20, 20);
var mult:uint = 0x80; // 50% 
bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;

noise()Methods 
public function noise(randomSeed:int , low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void

랜덤 노이즈를 나타내는 픽셀로 이미지를 전부 칠합니다.

Parameters
randomSeed:int — 랜덤 배정 (난수의 종)으로서 사용하는 수치입니다. 다른 모든 Parameters를 같은 로 했을 경우, 랜덤 배정의 값을 변경하는 것으로 다양한 유사 난수를 생성할 수 있습니다. 노이즈 함수는 매핑 함수이며, 진정한 난수 생성 함수가 아닙니다. 이 때문에, 같은 랜덤 배정으로부터 매회 같은 결과가 작성됩니다.
 
low:uint (default = 0) — 채널 마다 생성하는 최소치입니다 (0 ~ 255).
 
high:uint (default = 255) — 채널 마다 생성하는 최대치입니다 (0 ~ 255).
 
channelOptions:uint (default = 7) — 임의의 4 개의 칼라 채널치 (BitmapDataChannel.RED,BitmapDataChannel.BLUE,BitmapDataChannel.GREEN, 및 BitmapDataChannel.ALPHA) 의 편성인 수치. OR 논리 연산자 (|)를 사용해, 복수의 채널치를 조합할 수가 있습니다.
 
grayScale:Boolean (default = false) — 불리언 값. 값이 true 의 경우, 모든 칼라 채널에 같은 값을 설정하는 것으로 그레이 스케일의 이미지가 작성됩니다. 이 Parameters를 true 로 설정해도, 알파 채널 선택에는 영향을 주지 않습니다.

See also


Example
다음의 예에서는, 2 개의 BitmapData object를 작성해, 양자에 대해서 noise() Methods를 호출합니다. 다만,grayscale Parameters는 false (최초의 object에 대한다 noise() Methods 호출), 및 true (2 번째의 object에 대한다 noise() Methods 호출)에 각각 설정합니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;

var bmd1:BitmapData = new BitmapData(80, 80);
var bmd2:BitmapData = new BitmapData(80, 80);

var seed:int = int(Math.random() * int.MAX_VALUE);
bmd1.noise(seed, 0, 0xFF, BitmapDataChannel.RED, false);
bmd2.noise(seed, 0, 0xFF, BitmapDataChannel.RED, true);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 90;

paletteMap()Methods 
public function paletteMap(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void

최대로 4 개의 칼라 팔레트 데이터 배열 ( 각 채널 마다 1 개의 배열)을 사용해, 이미지내의 칼라 채널치를 매핑 다시 합니다.

Flash Player 는 이하의 순서에 따라, 결과적으로 얻을 수 있는 이미지를 생성합니다.

  1. 적, 록, 청, 알파의 각 값를 산출한 후, 표준의 32 비트 정수 산술 연산을 사용해 이러한 값을 서로 더합니다.
  2. 각 픽셀의 적, 록, 청, 알파의 채널치를 추출해, 별개의 0 ~ 255 의 값으로 합니다. 이러한 값은, 해당하는 배열로 새로운 칼라치를 조사하는 경우에 사용합니다. 해당하는 배열에는,redArray,greenArray,blueArray, 및 alphaArray 가 있습니다. 이것들 4 개의 배열에는 각각 256 개의 값이 포함되어 있을 필요가 있습니다.
  3. 새로운 채널치를 4 개 모두 모두 취득한 후, 그러한 값을 조합해, 픽셀에 적용되는 표준의 ARGB 값로 합니다.

이 Methods에서는 크로스 채널 효과를 지원(support)하는 것이 가능합니다. 각각의 입력 배열은 완전한 32 비트치를 포함할 수가 있습니다. 값을 서로 더할 때 이동은 발생하지 않습니다. 이 routine는, 채널 단위의 쿠란핑에 대응하고 있습니다.

채널에 대해서 배열이 지정되지 않는 경우는, 소스 이미지로부터 타겟 이미지에 칼라 채널이 복사됩니다.

이 Methods는 다양한 효과를 위해서(때문에) 사용할 수 있습니다. 예를 들어, 통상의 팔레트 매핑 (1 개의 채널을 선택해 유사색이미지로 변환한다)이 가능합니다. 게다가 감마, 곡선, 평준화, 양자화라고 한 다양한 칼라 조작 알고리즘에도 이 Methods를 사용할 수 있습니다.

Parameters
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
 
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
 
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData object) 내의 포인트입니다.
 
redArray:Array (default = null)redArraynull 가 아닌 경우,red = redArray[source red value] else red = source rect value.
 
greenArray:Array (default = null)greenArraynull 가 아닌 경우,green = greenArray[source green value] else green = source green value.
 
blueArray:Array (default = null)blueArraynull 가 아닌 경우,blue = blueArray[source blue value] else blue = source blue value.
 
alphaArray:Array (default = null)alphaArraynull 가 아닌 경우,alpha = alphaArray[source alpha value] else alpha = source alpha value.

Throws
TypeError — sourceBitmapData, sourceRect, 또는 destPoint 가 null 입니다.

Example
다음의 예에서는, 중앙에 붉은 정방형이 있는 초록의 BitmapData object를 작성한 후, paletteMap() Methods를 사용해, 빨강과 초록을 BitmapData object의 하반신의 구형으로 바꿔 넣습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000);
myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00);

var redArray:Array = new Array(256);
var greenArray:Array = new Array(256);

for(var i:uint = 0; i < 255; i++) {
    redArray[i] = 0x00000000;
    greenArray[i] = 0x00000000;
}

redArray[0xFF] = 0x0000FF00;
greenArray[0xFF] = 0x00FF0000;

var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40);
var pt:Point = new Point(0, 0);
myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray);

var bm1:Bitmap = new Bitmap(myBitmapData);
addChild(bm1);

perlinNoise()Methods 
public function perlinNoise(baseX:Number , baseY:Number , numOctaves:uint , randomSeed:int , stitch:Boolean , fractalNoise:Boolean , channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void

Perlin 노이즈 이미지를 생성합니다.

Perlin 노이즈 생성 알고리즘은, 개개의 랜덤 노이즈 함수 (옥타브라고 한다)를 보간 및 결합해, 보다 자연스러운 랜덤 노이즈를 생성하는 단일의 함수로 합니다. 음악의 옥타브와 같이, 각 옥타브 함수의 주파수는, 그 전의 옥타브 함수의 주파수의 2 배입니다. Perlin 노이즈는, 복수의 노이즈 데이터 세트를 다양한 상세 레벨로 조합하므로, 「프랙탈 이론 노이즈의 화」라고 불려 왔습니다.

Perlin 노이즈 함수를 사용해, 나뭇결, 구름, 산맥등의 자연현상이나 풍경을 시뮬레이트 할 수 있습니다. 대부분의 경우, Perlin 노이즈 함수의 출력을 그대로 표시하는 것이 아니라, 다른 이미지를 강조하거나 의사 랜덤 바리에이션을 주기 위해서(때문에) 사용합니다.

단순한 디지털 랜덤 노이즈 함수는, 많은 경우, 콘트라스트의 힘든 포인트가 포함되는 이미지를 생성합니다. 이와 같이 힘든 콘트라스트는 자연계에는 거의 존재하지 않습니다. Perlin 노이즈 알고리즘은, 다양한 상세 레벨로 실행되는 복수의 노이즈 함수를 혼합합니다. 이 알고리즘의 결과, 서로 인접하는 픽셀치의 차이는 보다 작아집니다.

메모 :Perlin 노이즈 알고리즘은, 1982 년의 영화 「트론」의 컴퓨터 그래픽을 생성한 후에 알고리즘을 개발한 Ken Perlin 씨를 기념하여 명명되었습니다. Perlin 씨는 1997 년에, Perlin 노이즈 함수에 관한 기술적 공적에 의해 아카데미상을 수상했습니다.

Parameters
baseX:Number x 방향으로 사용하는 주파수. 예를 들어, 64 ●x● 128 의 이미지에 알맞는 크기의 노이즈를 생성하려면 ,baseX 값로서 64 를 건네줍니다.
 
baseY:Number y 방향으로 사용하는 주파수. 예를 들어, 64 ●x● 128 의 이미지에 알맞는 크기의 노이즈를 생성하려면 ,baseY 값로서 128 을 건네줍니다.
 
numOctaves:uint — 이 노이즈를 작성하기 위해서 조합하는 옥타브 (즉 개개의 노이즈 함수)의 수. 옥타브수를 많이 하면, 에서 와 째 세세한 이미지를 작성할 수 있습니다. 옥타브수를 늘리면, 처리 시간도 길어집니다.
 
randomSeed:int — 랜덤 배정 (난수의 종)으로서 사용하는 수치입니다. 다른 모든 Parameters를 같은 로 했을 경우, 랜덤 배정의 값을 변경하는 것으로 다양한 유사 난수를 생성할 수 있습니다. Perlin 노이즈 함수는 매핑 함수이며, 진정한 난수 생성 함수가 아닙니다. 이 때문에, 같은 랜덤 배정으로부터 매회 같은 결과가 작성됩니다.
 
stitch:Boolean — 불리언 값. 값이 true 의 경우, 비트 맵 칠로서 심리스인 타일링용 texture를 작성하기 위해서, 이 Methods는 이미지의 트란지션엣지를 순조롭게 하는 것을 시도합니다.
 
fractalNoise:Boolean — 불리언 값. 값이 true 의 경우, 이 Methods는 프랙탈 이론 노이즈를 생성합니다. 그렇지 않은 경우, 난류를 생성합니다. 난류가 있는 이미지에는 그라데이션에 시각적인 불연속성이 있으므로, 불길이나 해파와 같이 샤프한 시각 효과에 적절하고 있는 경우가 있습니다.
 
channelOptions:uint (default = 7) — 임의의 4 개의 칼라 채널치 (BitmapDataChannel.RED,BitmapDataChannel.BLUE,BitmapDataChannel.GREEN, 및 BitmapDataChannel.ALPHA) 의 편성인 수치. OR 논리 연산자 (|)를 사용해, 복수의 채널치를 조합할 수가 있습니다.
 
grayScale:Boolean (default = false) — 불리언 값. 값이 true 의 경우, 적, 록, 및 파랑의 각 칼라 채널에 같은 값을 설정해, 그레이 스케일 이미지가 작성됩니다. 이 값이 true 로 설정되어도, 알파 채널의 값에 영향은 없습니다.
 
offsets:Array (default = null) — 각 옥타브의 x 오프셋(offset)와 y 오프셋(offset)에 대응하는 포인트의 배열. 오프셋(offset)치를 조작하는 것으로, perlinNoise 이미지의 layer를 순조롭게 스크롤 할 수 있습니다. 오프셋(offset) 배열내의 각 포인트는, 특정의 옥타브 노이즈 함수에 영향을 줍니다.

Example
다음의 예에서는, 200 × 200 픽셀의 BitmapData object를 작성합니다. 이 object로, 빨강 및 파랑의 수채화 효과를 생성하기 위해서 perlinNoise() Methods를 호출합니다.

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(200, 200, false, 0x00CCCCCC);

var seed:Number = Math.floor(Math.random() * 10);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd.perlinNoise(100, 80, 6, seed, false, true, channels, false, null);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

pixelDissolve()Methods 
public function pixelDissolve(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int

소스 이미지로부터 타겟 이미지에의 피크세르디조르브, 또는 같은 이미지를 사용한 피크세르디조르브를 실행합니다. Flash Player 는 randomSeed 값를 사용해, 랜덤인 피크세르디조르브를 생성합니다. 완료할 때까지 피크세르디조르브를 계속하려면 , 이 함수의 반환값을 후속의 호출에 건네줄 필요가 있습니다.

소스 이미지와 타겟 이미지가 동일하지 않은 경우는, 모든 property를 사용해, 소스로부터 타겟으로 픽셀이 복사됩니다. 이 처리에 의해, 공백 이미지로부터 완전하게 설정된 이미지에의 디조르브가 가능하게 됩니다.

소스 이미지와 타겟 이미지가 동일한 경우는,color Parameters를 사용해 픽셀이 칠해집니다. 이 처리에 의해, 완전하게 설정된 이미지를 소거하도록(듯이) 디조르브 할 수 있습니다. 이 모드에서는, 타겟 point Parameters가 무시됩니다.

Parameters
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
 
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
 
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData 인스턴스) 내의 포인트입니다.
 
randomSeed:int (default = 0) — 피크세르디조르브를 개시하기 위해서 사용하는 랜덤 배정 (난수의 종)입니다.
 
numPixels:int (default = 0) — 디폴트는, 소스 area (폭 x 높이)의 것 1/30 입니다.
 
fillColor:uint (default = 0) — 소스치와 타겟치가 동일한 픽셀의 전부 칠해에 사용하는 ARGB 칼라치입니다.

반환값
int — 후속의 호출로 사용하는 새로운 랜덤 배정 (난수의 종)입니다.

Throws
TypeError — sourceBitmapData, sourceRect, 또는 destPoint 가 null 입니다.
 
TypeError — numPixels 가 부의 값입니다.

Example
다음의 예에서는,pixelDissolve() Methods를 사용해 회색의 BitmapData object를 붉은 object로 변환합니다. 그 때, 모든 픽셀의 색이 변화할 때까지, 한 번에 40 픽셀씩 디조르브 합니다.
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.Timer;
import flash.events.TimerEvent;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC);
var bitmap:Bitmap = new Bitmap(bmd);
addChild(bitmap);

var tim:Timer = new Timer(20);
tim.start();
tim.addEventListener(TimerEvent.TIMER, timerHandler);
 
function timerHandler(event:TimerEvent) :void {
    var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE);
    dissolve(randomNum);
}

function dissolve(randomNum:Number) :void {
    var rect:Rectangle = bmd.rect;
    var pt:Point = new Point(0, 0);
    var numberOfPixels:uint = 100;
    var red:uint = 0x00FF0000;
    bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, red);
    var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, true);
    if(grayRegion.width == 0 && grayRegion.height == 0 ) {
        tim.stop();
    }
}

scroll()Methods 
public function scroll(x:int , y:int ):void

소정의 (x, y) 픽셀량만 이미지를 스크롤 합니다. 스크롤 area외의 엣지 area는 변함없이에 그대로 됩니다.

Parameters
x:int — 수평 방향의 스크롤량입니다.
 
y:int — 수직 방향의 스크롤량입니다.

Example
다음의 예는, Bitmap 데이터 object를 오른쪽으로 40 픽셀만 스크롤 한 효과를 나타내고 있습니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);
var rect:Rectangle = new Rectangle(0, 0, 40, 40);
bmd.fillRect(rect, 0xFFFF0000);
            
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

trace (bmd.getPixel32(50, 20). toString(16)); // ffcccccccc

bmd.scroll(30, 0); 

trace (bmd.getPixel32(50, 20). toString(16)); // ffff0000

setPixel()Methods 
public function setPixel(x:int , y:int , color:uint ):void

BitmapData object의 1 개의 픽셀을 설정합니다. 이 처리중, 이미지 픽셀의 알파 채널은 현재의 값이 보관 유지됩니다. RGB 칼라 Parameters의 값은, 곱셈되어 있지 않은 칼라치로서 다루어집니다.

메모: setPixel() 또는 setPixel32() Methods를 반복해 사용하는 경우, 퍼포먼스를 향상시키려면 ,setPixel() 또는 setPixel32() Methods를 호출하기 전에 lock() Methods를 호출합니다. 그 후, 픽셀 변경이 모두 완료하면,unlock() 를 호출합니다. 이와 같이 처리를 실시하면, 픽셀 변경이 모두 완료할 때까지, 이 BitmapData 인스턴스를 참조하는 object는 갱신되지 않습니다.

Parameters
x:int — 값가 변경되는 픽셀의 x 좌표입니다.
 
y:int — 값가 변경되는 픽셀의 y 좌표입니다.
 
color:uint — 결과적으로 생성되는, 픽셀의 RGB 칼라입니다.

See also


Example
다음의 예에서는,setPixel() Methods를 사용해, BitmapData object내에 붉은 선을 묘화 합니다.

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, false, 0xCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0xFF0000;
    bmd.setPixel(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

setPixel32()Methods 
public function setPixel32(x:int , y:int , color:uint ):void

BitmapData object의 1 개의 픽셀에 칼라치와 알파 투명도 값을 설정합니다. 이 Methods는 setPixel() Methods와 닮아 있습니다. 주된 차이는,setPixel32() Methods는 알파 채널 정보를 포함한 ARGB 칼라치를 받아들이는 것입니다.

BitmapData object내의 모든 픽셀은, 곱셈이 끝난 칼라치로서 보존됩니다. 곱셈이 끝난 이미지 픽셀은, 알파 데이터가 이미 곱셈된 적, 초록, 파랑의 각 칼라 채널치를 보관 유지합니다. 예를 들어, 알파치가 0 의 경우, 곱셈되어 있지 않은 값 (와)는 관계없는 것으로, RGB 채널의 값도 0 이 됩니다. 이와 같이 데이터가 없어지면, 처리의 실행시에 문제가 생기는 일이 있습니다. BitmapData 의 모든 Methods는, 곱셈되어 있지 않은 값을 받거나 돌려주거나 합니다. 픽셀의 내부 표현은, 값으로 해서 돌려주어지기 전에, 곱셈이 끝난 상태로부터 비곱셈에 변환됩니다. 설정 처리때는, 픽셀치가 사전에 곱셈되고 나서, 생의 이미지 픽셀이 설정됩니다.

메모: setPixel() 또는 setPixel32() Methods를 반복해 사용하는 경우, 퍼포먼스를 향상시키려면 ,setPixel() 또는 setPixel32() Methods를 호출하기 전에 lock() Methods를 호출합니다. 그 후, 픽셀 변경이 모두 완료하면,unlock() 를 호출합니다. 이와 같이 처리를 실시하면, 픽셀 변경이 모두 완료할 때까지, 이 BitmapData 인스턴스를 참조하는 object는 갱신되지 않습니다.

Parameters
x:int — 값가 변경되는 픽셀의 x 좌표입니다.
 
y:int — 값가 변경되는 픽셀의 y 좌표입니다.
 
color:uint — 결과적으로 생성되는, 픽셀의 ARGB 칼라입니다. 비트 맵이 불투명한 (투명하지 않다) 경우에는, 이 칼라치의 알파 투명도 부분은 무시됩니다.

See also


Example
다음의 예에서는,setPixel32() Methods를 사용해, 투명한 (alpha == 0x60) 붉은 선을 BitmapData object내에 묘화 합니다.

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0x60FF0000;
    bmd.setPixel32(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

setPixels()Methods 
public function setPixels(rect:Rectangle , inputByteArray:ByteArray ):void

바이트 배열을 픽셀 데이터의 구형 area로 변환합니다. 각 픽셀 마다 ByteArray.readUnsignedInt() Methods가 불려 가 반환값이 픽셀에 기입해집니다. 구형 전체가 기입해지기 전에 바이트 배열이 종료했을 경우, 함수는 종료합니다. 바이트 배열내의 데이터는 32 비트 ARGB 픽셀치와 상정됩니다. 픽셀 독해의 전후에, 바이트 배열에 대한 시크는 실행되지 않습니다.

Parameters
rect:Rectangle — BitmapData object의 구형 area를 지정합니다.
 
inputByteArray:ByteArray — 구형 area로 사용되는 32 비트의 곱셈되지 않는 픽셀치로부터 되는 ByteArray object입니다.

Throws
EOFError inputByteArray object에는,rect 구형의 area를 전부 칠하기 위한 충분한 데이터가 포함되어 있지 않습니다. 이 Methods는, 가능한 한 많은 픽셀을 전부 칠한 후, 예외를 슬로우 합니다.
 
TypeError — rect 또는 inputByteArray 이 null 입니다.

See also


Example
다음의 예에서는 getPixels()setPixels() Methods를 사용해, 1 개의 BitmapData object로부터 다른 object에 픽셀을 복사합니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(100, 100, true, 0xFFCCCCCC);
var bmd2:BitmapData = new BitmapData(100, 100, true, 0xFFFF0000);

var rect:Rectangle = new Rectangle(0, 0, 100, 100);
var bytes:ByteArray = bmd1.getPixels(rect);

bytes.position = 0;
bmd2.setPixels(rect, bytes);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;

threshold()Methods 
public function threshold(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , operation:String , threshold:uint , color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint

지정되었고 귀의치와 비교해 이미지내의 픽셀치를 테스트해, 테스트에 적합한 픽셀에 새로운 칼라치를 설정합니다. threshold() Methods를 사용하면, 이미지내의 칼라 범위를 분리 및 값환하거나 그 외의 논리 연산을 이미지 픽셀에 대해서 실행할 수가 있습니다.

threshold() Methods의 테스트 논리는 다음과 같습니다.

  1. ((pixelValue & mask) operation (threshold & mask)) 의 경우, 픽셀을 color 로 설정
  2. 그렇지 않은 경우,copySource == true 이면,sourceBitmap 의 대응하는 픽셀치에 픽셀을 설정

operation Parameters에는, 해 귀의치 테스트로 사용하는 비교 연산자를 지정합니다. 예를 들어,operation Parameters로서 "==" 를 사용하는 것으로써, 이미지내의 특정의 칼라치를 분리할 수 있습니다. 또는,{operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000} 를 사용하는 것으로써, 소스 이미지 픽셀의 알파가 0x7F 미만의 경우에, 모든 타겟 픽셀이 완전하게 투명하게 되도록(듯이) 설정할 수 있습니다. 애니메이션화 된 트란지션이나 그 외의 효과에 대해서, 이 기법을 사용할 수 있습니다.

Parameters
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
 
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
 
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData 인스턴스) 내의 포인트입니다.
 
operation:String — 비교 연산자 ("<","<=",">",">=","==","! =")의 1 개. string로서 건네받습니다.
 
threshold:uint — 각 픽셀이 해 귀의치에 적합하는지, 그렇지 않으면 해 귀의치를 넘고 있는지를 테스트하기 위한 기준이 되는 값입니다.
 
color:uint (default = 0) — 해 귀의치 테스트에 적합했을 경우에 픽셀로 설정되는 칼라치입니다. 디폴트치는 0x000000 입니다.
 
mask:uint (default = 0xFFFFFFFF) — 칼라 컴퍼넌트를 분리하기 위해서 사용하는 마스크입니다.
 
copySource:Boolean (default = false) — 값가 true 이면, 해 귀의치 테스트에 적합하지 않는 경우에 소스 이미지의 픽셀치가 타겟으로 복사됩니다. 값이 false 이면, 해 귀의치 테스트에 적합하지 않는 경우에 소스 이미지는 복사되지 않습니다.

반환값
uint — 변경된 픽셀의 수입니다.

Throws
TypeError — sourceBitmapData, sourceRect, destPoint, 또는 operation 가 null 입니다.
 
ArgumentError — operation 의 string가 유효한 연산이 아닙니다.

Example
다음의 예에서는,perlinNoise() Methods를 사용해 파랑 및 빨강의 패턴을 1 개의 BitmapData object에 추가한 후,threshold() Methods를 사용해 최초의 BitmapData object로부터 2 번째의 object에 이러한 픽셀을 복사합니다. 그 때, 빨강의 값이 0x80 (50%)보다 큰 픽셀을, 투명의 빨강 (0x20FF0000)으로 설정된 픽셀에 값환합니다.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.geom.Point;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);

var seed:int = int(Math.random() * int.MAX_VALUE);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null);

var bitmap1:Bitmap = new Bitmap(bmd1);
addChild(bitmap1);

var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);
var pt:Point = new Point(0, 0);
var rect:Rectangle = new Rectangle(0, 0, 200, 200);
var threshold:uint =  0x00800000; 
var color:uint = 0x20FF0000;
var maskColor:uint = 0x00FF0000;
bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);

var bitmap2:Bitmap = new Bitmap(bmd2);
bitmap2.x = bitmap1.x + bitmap1.width + 10;
addChild(bitmap2);

unlock()Methods 
public function unlock(changeRect:Rectangle = null):void

이 BitmapData object가 변경되었을 때에, BitmapData object를 참조하는 모든 object (예를 들어 Bitmap object)가 갱신되도록(듯이), 이미지를 락 해제합니다. 퍼포먼스를 향상시키려면 ,setPixel() Methods 또는 setPixel32() Methods를 몇번이나 호출하는 전후에, 이 Methods를 lock() Methods와 함께 사용해 주세요.

Parameters
changeRect:Rectangle (default = null) — 변경된 BitmapData object의 area. 이 Parameters에 값을 지정하지 않는 경우, BitmapData object의 전area가 변경되었다고 보여집니다.

See also


Example
다음의 예로 작성되는 BitmapData object는, Bitmap object picturebitmapData property에 근거하고 있습니다. 그 후,lock() Methods를 호출한 다음에, BitmapData object를 변경한다 복잡한 custom 함수 complexTransformation() 를 호출합니다. (picture object와 complexTransformation() 함수는 이 예에서는 정의되지 않습니다. ) 비록 complexTransformation() 함수가 picture object의 bitmapData property를 갱신했을 경우에서도,unlock() Methods가 bitmapData object에 대해서 불려 갈 때까지는, 변경 내용이 반영되지 않습니다.
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;

Examples

다음의 예에서는, 클래스 BitmapDataExample 를 사용해, 이미지 "Image.gif" 를 디폴트의 위치 (0,0)에 있는 DisplayObject 에 로드합니다. 계속되어, "Image.gif" 의 복사를 원의 이미지의 오른쪽으로 배치합니다. 이 복사에서는, threshold() Methods를 사용한 테스트에 합격한 픽셀에 새로운 색이 적용됩니다. 이것을 실시하려면 , 이하의 순서를 실행합니다.
  1. url property를 작성합니다. 이것은 이미지 파일의 장소와 이름입니다.
  2. 클래스 constructor    이 Loader object를 작성합니다. 이것은,completeHandler() Methods가 이미지의 조작을 완료했을 때에 dispatch되는 event listener를 인스턴스화합니다.
  3. 계속되어, URLRequest object requestloader.load() 에게 건네집니다. 이것에 의해, 표시 object를 사용해 이미지가 메모리에 로드 됩니다.
  4. 다음에 이미지가 표시 리스트에 배치되어 이미지는 화면의 좌표 x = 0, y = 0 에 표시됩니다.
  5. 계속되어,completeHandler() Methods로 다음의 처리가 실행됩니다.
    • 2 번째의 Loader object와 Loader object에 의해 초기화된다 Bitmap object를 작성합니다.
    • 2 번째의 Bitmap object duplicate 를 작성해, duplicateImage() Methods를 호출해, 원의 이미지의 복제를 작성합니다.
    • BitmapData object를 작성해,duplicate object의 BitmapData object에 할당합니다.
    • 원의 이미지와 같은 좌표, 폭, 높이로 초기화된 새로운 Rectangle object를 작성합니다.
    • 새로운 Point object를 작성합니다. 디폴트에서는 x = 0, y = 0 에 작성됩니다.
    • 다음에 나타내는 변수를 작성합니다.
      • operation — 해 귀의치가 원의 값이상인 경우에, 새로운 색을 적용합니다.
      • threshold — 각 픽셀의 비교 대상의 값입니다. 이 예에서는, 알파 0xCC 의 밝은 회색으로 설정됩니다.
      • color — 해 귀의치의 테스트에 합격한 픽셀로 설정하는 색입니다. 이 경우는 황색입니다.
      • mask — 정반대의 색입니다. 이 경우는 투명색의 청색입니다.
      • copySourcefalse 로 설정합니다. 이것은, 해 귀의치를 채우지 않았던 경우에는, 픽셀치가 복사되지 않는 것을 나타냅니다. 이미지가 복제되어 해 귀의치의 테스트에 합격한 픽셀만이 변경되기 (위해)때문에, 이 값에 의미는 없습니다.
    • 상기의 변수를 사용해 threshold() Methods를 호출합니다. 결과의 해 귀의치의 등식은 다음과 같이 됩니다. if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00.

메모 :


package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events. *;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.net.URLRequest;

    public class BitmapDataExample extends Sprite {
        private var url:String = "Image.gif";
        private var size:uint = 80;

        public function BitmapDataExample() {
            configureAssets();
        }

        private function configureAssets() :void {
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

            var request:URLRequest = new URLRequest(url);
            loader.x = size * numChildren;
            loader.load(request);
            addChild(loader);
        }

        private function duplicateImage(original:Bitmap) :Bitmap {
            var image:Bitmap = new Bitmap(original.bitmapData.clone());
            image.x = size * numChildren;
            addChild(image);
            return image;
        }

        private function completeHandler(event:Event) :void {
            var loader:Loader = Loader(event.target.loader);
            var image:Bitmap = Bitmap(loader.content);

            var duplicate:Bitmap = duplicateImage(image);
            var bitmapData:BitmapData = duplicate.bitmapData;
            var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height);
            var destPoint:Point = new Point();
            var operation:String = ">=";
            var threshold:uint = 0xCCCCCCCC;
            var color:uint = 0xFFFFFF00;
            var mask:uint = 0x000000FF;
            var copySource:Boolean = true;

            bitmapData.threshold(bitmapData,
                                 sourceRect,
                                 destPoint,
                                 operation,
                                 threshold,
                                 color,
                                 mask,
                                 copySource);
        }
        
        private function ioErrorHandler(event:IOErrorEvent) :void {
            trace("Unable to load image: " + url);
        }
    }
}






 

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

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