패키지 | flash.display |
클래스 | public class BitmapData |
상속 | BitmapData Object |
구현 | IBitmapDrawable |
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
flash.display.Loader
클래스를 통해 로드한 비트맵 이미지에도 액세스할 수 있습니다.
이 클래스를 사용하면 비트맵 렌더링 작업을 Flash Player의 내부 표시 업데이트 루틴과 분리할 수 있습니다. BitmapData 객체를 직접 조작함으로써 매 프레임마다 벡터 데이터에서 내용을 반복해서 그려야 하는 수고 없이도 복잡한 이미지를 만들 수 있습니다.
BitmapData 클래스의 메서드는 비트맵 이외의 표시 객체에서 필터를 통해 얻을 수 없는 효과를 지원합니다.
BitmapData 객체에는 일련의 픽셀 데이터가 포함되어 있습니다. 이 데이터는 완전 불투명 비트맵을 나타낼 수도 있고 알파 채널 데이터가 포함된 투명 비트맵을 나타낼 수도 있습니다. 둘 중 어느 유형이든 BitmapData 객체는 32비트 정수의 버퍼로 저장됩니다. 각각의 32비트 정수는 비트맵에 포함된 단일 픽셀의 속성을 결정합니다.
각각의 32비트 정수는 해당 픽셀의 ARGB(알파 투명도, 빨강, 녹색, 파랑) 값을 기술하는 8비트의 채널 값(0 ~ 255) 네 개가 합쳐진 것입니다. ARGB 값에서 최상위 바이트는 알파 채널 값을 나타내며 빨강, 녹색 및 파랑이 이어집니다.
네 가지 채널(알파, 빨강, 녹색 및 파랑)은 BitmapData.copyChannel()
메서드 또는 DisplacementMapFilter.componentX
및 DisplacementMapFilter.componentY
속성과 함께 사용할 경우 숫자로 표시되며, 이 숫자는 BitmapDataChannel 클래스에서 다음 상수로 표시됩니다.
-
BitmapDataChannel.ALPHA
-
BitmapDataChannel.RED
-
BitmapDataChannel.GREEN
-
BitmapDataChannel.BLUE
BitmapData 객체의 bitmapData
속성을 사용하여 BitmapData 객체를 Bitmap 객체에 연결할 수 있습니다.
Graphics.beginBitmapFill()
메서드를 사용하여 BitmapData 객체를 통해 Graphics 객체를 채울 수 있습니다.
AIR 런타임에서 각 DockIcon, Icon, InteractiveIcon 및 SystemTrayIcon 클래스에는 아이콘의 비트맵 이미지를 정의하는 BitmapData 객체의 배열인 bitmaps
속성이 들어 있습니다.
AIR 1.5 및 Flash Player 10에서는 BitmapData 객체의 최대 크기가 8,191픽셀(폭 또는 높이)이며 총 픽셀 수는 16,777,215픽셀을 초과할 수 없습니다. 따라서 BitmapData 객체의 폭이 8,191픽셀이면 높이가 2,048픽셀 이하여야 합니다. Flash Player 9 이전 버전 및 AIR 1.1 이전 버전에서는 이 제한이 높이 2,880픽셀 및 폭 2,880픽셀입니다.
AIR 3 및 Flash player 11부터는 BitmapData 객체의 크기 제한이 없어졌습니다. 이제 비트맵의 최대 크기는 운영 체제에 따라 결정됩니다.
BitmapData 객체가 유효하지 않거나(예: height == 0
및 width == 0
인 경우) dispose()를 통해 해제된 경우, BitmapData 객체의 메서드나 속성을 호출하면 ArgumentError 오류가 발생합니다.
관련 API 요소
flash.desktop.DockIcon.bitmaps
flash.display.Graphics.beginBitmapFill()
flash.desktop.Icon.bitmaps
flash.desktop.InteractiveIcon.bitmaps
flash.display.Loader
flash.desktop.SystemTrayIcon.bitmaps
속성 | 정의 주체 | ||
---|---|---|---|
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
height : int [읽기 전용]
비트맵 이미지의 높이(픽셀 단위)입니다. | BitmapData | ||
rect : Rectangle [읽기 전용]
비트맵 이미지의 크기와 위치를 정의하는 사각형입니다. | BitmapData | ||
transparent : Boolean [읽기 전용]
비트맵 이미지에서 픽셀별 투명도를 지원하는지 여부를 정의합니다. | BitmapData | ||
width : int [읽기 전용]
비트맵 이미지의 폭(픽셀 단위)입니다. | BitmapData |
메서드 | 정의 주체 | ||
---|---|---|---|
지정된 폭과 높이로 BitmapData 객체를 만듭니다. | BitmapData | ||
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
소스 이미지와 filter 객체를 사용하여 필터링된 이미지를 생성합니다. | BitmapData | ||
원본 인스턴스를 내포된 비트맵까지 똑같이 복제한 새 BitmapData 객체를 반환합니다. | BitmapData | ||
ColorTransform 객체를 사용하여 비트맵 이미지의 지정된 영역에서 색상 값을 조정합니다. | BitmapData | ||
두 BitmapData 객체를 비교합니다. | BitmapData | ||
copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
현재 BitmapData 객체나 다른 BitmapData 객체의 채널에서 현재 BitmapData 객체의 채널로 데이터를 이전합니다. | BitmapData | ||
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
연장 효과나 회전 효과 또는 색상 효과 없이 이미지에서 픽셀을 조작할 수 있는 빠른 경로를 제공합니다. | BitmapData | ||
픽셀 데이터의 사각형 영역에서 바이트 배열을 채웁니다. | BitmapData | ||
BitmapData 객체를 저장하는 데 사용된 메모리를 비웁니다. | BitmapData | ||
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Flash 런타임 벡터 렌더러를 사용하여 비트맵 이미지에 source 표시 객체를 그립니다. | BitmapData | ||
drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void
Flash 런타임 벡터 렌더러를 사용하여 비트맵 이미지에 source 표시 객체를 그립니다. | BitmapData | ||
선택한 압축 알고리즘을 사용하여 이 BitmapData 객체를 압축하고 새 ByteArray 객체를 반환합니다. | BitmapData | ||
사각형의 픽셀 영역을 지정된 ARGB 색상으로 채웁니다. | BitmapData | ||
(x, y) 좌표에서 시작하는 이미지에서 색상 채우기 작업을 수행하여 특정 색상으로 채웁니다. | BitmapData | ||
지정된 BitmapData 객체와 소스 사각형 및 필터 객체를 기준으로 applyFilter() 메서드 호출이 적용될 대상 사각형을 결정합니다. | BitmapData | ||
사각형 영역이 비트맵 이미지 내에서 지정된 색상의 모든 픽셀을 포함할지(findColor 매개 변수가 true로 설정된 경우) 또는 지정된 색상을 제외한 모든 픽셀을 포함할지(findColor 매개 변수가 false로 설정된 경우)를 결정합니다. | BitmapData | ||
특정 지점(x, y)에서 BitmapData 객체의 RGB 픽셀 값을 나타내는 정수를 반환합니다. | BitmapData | ||
알파 채널 데이터와 RGB 데이터를 포함하는 ARGB 색상 값을 반환합니다. | BitmapData | ||
픽셀 데이터의 사각형 영역에서 바이트 배열을 생성합니다. | BitmapData | ||
픽셀 데이터의 사각형 영역에서 벡터 배열을 생성합니다. | BitmapData | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
BitmapData 객체의 256 값 이진 숫자 막대 그래프를 계산합니다. | BitmapData | ||
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
하나의 비트맵 이미지와 특정한 점, 사각형 또는 다른 비트맵 이미지 간의 픽셀 수준 히트 감지를 수행합니다. | BitmapData | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
이 BitmapData 객체를 변경할 때 BitmapData 객체를 참조하는 어떤 객체(예: Bitmap 객체)도 업데이트되지 않도록 이미지를 잠급니다. | 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
각 채널에 하나씩 최대 네 개까지의 색상 팔레트 데이터 배열이 있는 이미지에서 색상 채널 값을 다시 매핑합니다. | 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
소스 이미지에서 대상 이미지로, 혹은 같은 이미지를 사용하여 픽셀 디졸브(dissolve)를 수행합니다. | BitmapData | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
특정 (x, y) 픽셀 양만큼 이미지를 스크롤합니다. | BitmapData | ||
BitmapData 객체의 단일 픽셀을 설정합니다. | BitmapData | ||
BitmapData 객체의 단일 픽셀에 대한 색상 및 알파 투명도 값을 설정합니다. | BitmapData | ||
바이트 배열을 픽셀 데이터의 사각형 영역으로 변환합니다. | BitmapData | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
벡터를 픽셀 데이터의 사각형 영역으로 변환합니다. | BitmapData | ||
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
이미지의 픽셀 값을 지정된 임계값 기준으로 테스트하고 그 테스트를 통과한 픽셀을 새 색상 값으로 설정합니다. | BitmapData | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
이 BitmapData 객체를 변경할 때 BitmapData 객체를 참조하는 임의의 객체(예: Bitmap 객체)도 업데이트되도록 이미지 잠금을 해제합니다. | BitmapData | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object |
height | 속성 |
rect | 속성 |
transparent | 속성 |
transparent:Boolean
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
비트맵 이미지에서 픽셀별 투명도를 지원하는지 여부를 정의합니다. 생성자의 transparent
매개 변수에 true
를 전달하여 BitmapData 객체를 생성하는 경우에만 이 값을 설정할 수 있습니다. BitmapData 객체를 만든 후 transparent
속성 값이 true
인지 확인하여 객체가 픽셀별 투명도를 지원하는지 여부를 확인할 수 있습니다.
구현
public function get transparent():Boolean
width | 속성 |
BitmapData | () | 생성자 |
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
지정된 폭과 높이로 BitmapData 객체를 만듭니다. fillColor
매개 변수에 값을 지정하면 비트맵의 모든 픽셀이 해당 색상으로 설정됩니다.
transparent
매개 변수 값으로 false
를 전달하지 않는 한, 기본적으로 비트맵은 투명하게 만들어집니다. 불투명 비트맵을 만든 후에는 이를 투명 비트맵으로 변경할 수 없습니다. 불투명 비트맵의 모든 픽셀에서는 24비트 색상 채널 정보만 사용합니다. 비트맵을 투명으로 정의한 경우에는 각 픽셀에서 알파 투명도 채널을 포함하여 32비트 색상 채널 정보를 사용합니다.
AIR 1.5 및 Flash Player 10에서는 BitmapData 객체의 최대 크기가 8,191픽셀(폭 또는 높이)이며 총 픽셀 수는 16,777,215픽셀을 초과할 수 없습니다. 따라서 BitmapData 객체의 폭이 8,191픽셀이면 높이가 2,048픽셀 이하여야 합니다. Flash Player 9 이전 버전 및 AIR 1.1 이전 버전에서는 이 제한이 높이 2,880픽셀 및 폭 2,880픽셀입니다. 폭이나 높이를 2,880보다 큰 값으로 지정하는 경우 새 인스턴스는 생성되지 않습니다.
매개 변수width:int — 비트맵 이미지의 폭(픽셀 단위)입니다.
| |
height:int — 비트맵 이미지의 높이(픽셀 단위)입니다.
| |
transparent:Boolean (default = true ) — 비트맵 이미지의 픽셀별 투명도 지원 여부를 지정합니다. 기본값은 true (투명)입니다. 완전히 투명한 비트맵을 만들려면 transparent 매개 변수 값을 true 로 설정하고 fillColor 매개 변수 값을 0x00000000(또는 0)으로 설정합니다. transparent 속성을 false 로 설정하면 렌더링 성능이 약간 향상될 수 있습니다.
| |
fillColor:uint (default = 0xFFFFFFFF ) — 비트맵 이미지 영역을 채울 때 사용하는 32비트 ARGB 색상 값입니다. 기본값은 0xFFFFFFFF(흰색)입니다.
|
오류
ArgumentError — 폭 및/또는 높이가 최대 크기를 초과하는 경우입니다.
|
applyFilter | () | 메서드 |
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0 |
소스 이미지와 filter 객체를 사용하여 필터링된 이미지를 생성합니다.
이 메서드는 내장 필터 객체의 비헤이비어를 통해 입력 소스 사각형의 영향을 받는 대상 사각형을 결정합니다.
필터링을 거친 후 생성되는 이미지가 원래의 이미지보다 더 클 수도 있습니다. 예를 들어 BlurFilter 클래스를 사용하여 (50,50,100,100)의 소스 사각형 및 (10,10)의 대상 지점을 흐리게 처리하면, 대상 이미지에서 변경된 영역은 흐리게 처리하기 효과 때문에 (10,10,60,60)보다 커집니다. 이 같은 변화는 applyFilter()
호출 과정에서 내부적으로 발생합니다.
sourceBitmapData
매개 변수의 sourceRect
매개 변수가 200 x 200 이미지에서 (50,50,100,100)의 경우처럼 내부 영역인 경우, 필터는 sourceRect
매개 변수 외부에서 소스 픽셀을 사용하여 대상 사각형을 생성합니다.
BitmapData 객체와 sourceBitmapData
매개 변수로 지정된 객체가 동일한 객체인 경우, 응용 프로그램에서는 객체의 임시 복사본을 사용하여 필터를 수행합니다. 최상의 성능을 위해 이러한 상황은 피해야 합니다.
매개 변수
sourceBitmapData:BitmapData — 사용할 입력 비트맵 이미지입니다. 소스 이미지는 현재의 BitmapData 인스턴스를 가리킬 수도 있고 혹은 다른 BitmapData 객체가 될 수도 있습니다.
| |
sourceRect:Rectangle — 입력 이미지로 사용할 소스 이미지 영역을 정의하는 사각형입니다.
| |
destPoint:Point — 소스 사각형의 왼쪽 위 모서리에 해당하는 대상 이미지(현재 BitmapData 인스턴스) 내부의 점입니다.
| |
filter:BitmapFilter — 필터링 작업을 수행하는 데 사용할 filter 객체입니다. 다음과 같이 각각의 필터 유형별로 요구 사항이 다릅니다.
|
오류
TypeError — sourceBitmapData, sourceRect, destPoint 또는 filter가 null입니다.
| |
IllegalOperationError — BitmapData 객체의 투명도가 필터 작업과 호환되지 않습니다.
|
관련 API 요소
flash.filters.BlurFilter
flash.filters.ColorMatrixFilter
flash.filters.ConvolutionFilter
flash.filters.DisplacementMapFilter
flash.filters.DropShadowFilter
flash.filters.GlowFilter
flash.display.DisplayObject.filters
예제 ( 예제 사용 방법 )
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 | () | 메서드 |
public function clone():BitmapData
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
원본 인스턴스를 내포된 비트맵까지 똑같이 복제한 새 BitmapData 객체를 반환합니다.
반환값BitmapData — 원본과 동일한 새 BitmapData 객체입니다.
|
예제 ( 예제 사용 방법 )
import flash.display.Bitmap; import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(100, 80, false, 0x00000000); var bmd2:BitmapData = bmd1.clone(); bmd1.setPixel32(1, 1, 0xFFFFFFFF); trace(bmd1.getPixel32(1, 1).toString(16)); // ffffffff trace(bmd2.getPixel32(1, 1).toString(16)); // ff000000 var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); bm2.x = 110; this.addChild(bm2);
colorTransform | () | 메서드 |
public function colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
ColorTransform
객체를 사용하여 비트맵 이미지에서 지정된 영역의 색상 값을 조절합니다. 비트맵 이미지의 경계선과 사각형이 일치하는 경우 이 메서드는 이미지 전체의 색상 값을 변환합니다.
매개 변수
rect:Rectangle — ColorTransform 객체가 적용될 이미지 영역을 정의하는 Rectangle 객체입니다.
| |
colorTransform:flash.geom:ColorTransform — 적용할 색상 변환 값을 설명하는 ColorTransform 객체입니다.
|
오류
TypeError — rect 또는 colorTransform이 null입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
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 | () | 메서드 |
public function compare(otherBitmapData:BitmapData):Object
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
두 BitmapData 객체를 비교합니다. 두 BitmapData 객체의 크기(폭 및 높이)가 같은 경우 메서드는 새 BitmapData 객체를 반환하는데, 이 객체의 각 픽셀은 두 소스 객체의 픽셀 "차이"가 됩니다.
- 두 픽셀이 동일하면 픽셀 차이는 0x00000000입니다.
- 두 픽셀이 서로 다른 RGB 값을 가지면(알파 값 무시) 픽셀 차이는 0xRRGGBB이고 여기서 RR/GG/BB는 빨강, 녹색 및 파랑 채널 각각의 차이 값입니다(소스 객체의 픽셀 값에서
otherBitmapData
객체의 픽셀 값을 뺀 값). 이 경우에는 알파 채널 차이가 무시됩니다. - 알파 채널 값이 서로 다른 경우 픽셀 값은 0xZZFFFFFF이고 여기서 ZZ는 알파 값의 차이입니다(소스 객체의 알파 값에서
otherBitmapData
객체의 알파 값을 뺀 값).
예를 들어 다음 두 BitmapData 객체를 생각해 볼 수 있습니다.
var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF8800); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCCC6600); var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData; trace ("0x" + diffBmpData.getPixel(0,0).toString(16); // 0x332200
참고: 두 BitmapData 객체를 채우는 데 사용된 색상은 RGB 값이 약간 다릅니다(0xFF0000과 0xFFAA00). compare()
메서드의 결과는 각 픽셀이 두 비트맵의 RGB 값 차이를 나타내는 새 BitmapData 객체입니다.
다음 두 BitmapData 객체를 생각해 볼 수 있습니다. 여기서 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) as BitmapData; trace ("0x" + diffBmpData.getPixel32(0,0).toString(16); // 0x33ffffff
compare()
메서드의 결과는 각 픽셀이 두 비트맵의 알파 값 차이를 나타내는 새 BitmapData 객체입니다.
BitmapData 객체가 동일하면(폭, 높이 및 픽셀 값이 같은 경우) 메서드는 숫자 0을 반환합니다.
BitmapData 객체의 폭이 동일하지 않으면 숫자 -3이 반환되고,
BitmapData 객체의 높이는 동일하지 않지만 폭이 같으면 메서드는 숫자 -4를 반환합니다.
다음 예제에서는 폭이 다른(50과 60) 두 Bitmap 객체를 비교합니다.
var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000); var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00); trace(bmd1.compare(bmd2)); // -4
매개 변수
otherBitmapData:BitmapData — 소스 BitmapData 객체와 비교할 BitmapData 객체입니다.
|
Object — 두 BitmapData 객체의 크기(폭 및 높이)가 같은 경우 메서드는 두 객체 간의 차이를 나타내는 새 BitmapData 객체를 반환합니다(주요 설명 부분 참조). BitmapData 객체가 동일한 경우 숫자 0이 반환됩니다. BitmapData 객체의 폭이 동일하지 않으면 숫자 -3이 반환되고, BitmapData 객체의 높이가 동일하지 않으면 -4가 반환됩니다.
|
오류
TypeError — otherBitmapData가 null입니다.
|
예제 ( 예제 사용 방법 )
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 | () | 메서드 |
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
현재 BitmapData 객체나 다른 BitmapData 객체의 채널에서 현재 BitmapData 객체의 채널로 데이터를 이전합니다. 대상 BitmapData 객체의 다른 채널에 있는 모든 데이터는 그대로 보존됩니다.
소스 채널 값과 대상 채널 값은 다음 값 가운데 하나가 됩니다.
BitmapDataChannel.RED
BitmapDataChannel.GREEN
BitmapDataChannel.BLUE
BitmapDataChannel.ALPHA
매개 변수
sourceBitmapData:BitmapData — 사용할 입력 비트맵 이미지입니다. 소스 이미지는 다른 BitmapData 객체가 될 수도 있고 현재 BitmapData 객체를 참조할 수도 있습니다.
| |
sourceRect:Rectangle — 소스 Rectangle 객체입니다. 비트맵 내의 더 작은 영역에서 채널 데이터만 복사하려면 BitmapData 객체의 전체 크기보다 더 작은 소스 사각형을 지정합니다.
| |
destPoint:Point — 새 채널 데이터가 위치할 사각형 영역의 왼쪽 위 모서리를 나타내는 대상 Point 객체입니다. 한 영역에서 대상 이미지 내의 다른 영역으로 채널 데이터를 복사하려면 (0,0) 이외의 점을 지정합니다.
| |
sourceChannel:uint — 소스 채널입니다. BitmapDataChannel 클래스의 값(BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN , BitmapDataChannel.ALPHA )을 사용합니다.
| |
destChannel:uint — 대상 채널입니다. BitmapDataChannel 클래스의 값(BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN , BitmapDataChannel.ALPHA )을 사용합니다.
|
오류
TypeError — sourceBitmapData, sourceRect 또는 destPoint가 null입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
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 | () | 메서드 |
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
연장 효과나 회전 효과 또는 색상 효과 없이 이미지에서 픽셀을 조작할 수 있는 빠른 경로를 제공합니다. 이 메서드는 소스 이미지의 사각형 영역을 대상 BitmapData 객체의 대상 지점에서 같은 크기의 사각형 영역에 복사합니다.
alphaBitmap
및 alphaPoint
매개 변수를 포함시키면 복사본 이미지를 소스 이미지의 알파 소스로 사용할 수 있습니다. 소스 이미지가 알파 데이터를 가지고 있는 경우 두 가지 알파 데이터 모두 소스 이미지에서 대상 이미지로 픽셀을 합성하는 데 사용됩니다. alphaPoint
매개 변수는 알파 이미지에서 소스 사각형의 왼쪽 위 모서리에 해당하는 점입니다. 소스 이미지와 알파 이미지의 교점 밖에 있는 픽셀은 대상 이미지로 복사되지 않습니다.
mergeAlpha
속성은 투명 이미지를 다른 투명 이미지 위에 복사할 때 알파 채널을 사용할 것인지 여부를 제어합니다. 알파 채널 데이터와 함께 픽셀을 복사하려면 mergeAlpha
속성을 true
로 설정합니다. 기본적으로 mergeAlpha
속성은 false
입니다.
매개 변수
sourceBitmapData:BitmapData — 픽셀을 복사해 올 입력 비트맵 이미지입니다. 소스 이미지는 현재의 BitmapData 인스턴스를 참조할 수도 있고 다른 BitmapData 인스턴스가 될 수도 있습니다.
| |
sourceRect:Rectangle — 입력 이미지로 사용할 소스 이미지 영역을 정의하는 사각형입니다.
| |
destPoint:Point — 새 픽셀이 위치할 사각형 영역의 왼쪽 위 모서리를 표시하는 대상 지점입니다.
| |
alphaBitmapData:BitmapData (default = null ) — 복사본 알파 BitmapData 객체 소스입니다.
| |
alphaPoint:Point (default = null ) — 알파 BitmapData 객체 소스의 점으로서, sourceRect 매개 변수의 왼쪽 위 모서리에 해당됩니다.
| |
mergeAlpha:Boolean (default = false ) — 알파 채널을 사용하려면 값을 true 로 설정합니다. 알파 채널을 사용하지 않고 픽셀을 복사하려면 값을 false 로 설정합니다.
|
오류
TypeError — sourceBitmapData, sourceRect 및 destPoint가 null입니다.
|
예제 ( 예제 사용 방법 )
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;
copyPixelsToByteArray | () | 메서드 |
public function copyPixelsToByteArray(rect:Rectangle, data:ByteArray):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.4, AIR 3.4 |
픽셀 데이터의 사각형 영역에서 바이트 배열을 채웁니다. 이 메서드는 ByteArray의 position
색인부터 픽셀별로 부호 없는 정수(곱하지 않은 32비트 픽셀 값)를 바이트 배열에 씁니다. 필요한 경우 모든 바이트 배열의 크기가 픽셀 데이터를 유지하는 데 필요한 바이트 수까지 증가합니다.
매개 변수
rect:Rectangle — 현재 BitmapData 객체의 사각형 영역입니다
| |
data:ByteArray — 대상 ByteArray 객체입니다.
|
오류
TypeError — rect 인수가 null 이거나 data 인수가 null 인 경우입니다.
|
관련 API 요소
dispose | () | 메서드 |
public function dispose():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
BitmapData 객체를 저장하는 데 사용된 메모리를 비웁니다.
dispose()
메서드가 호출되면 해당 이미지의 폭과 높이가 0으로 설정됩니다. 이후로 이 BitmapData 인스턴스의 메서드나 속성에 대한 호출은 모두 실패하며 예외가 발생됩니다.
BitmapData.dispose()
는 실제 비트맵 데이터가 차지한 메모리를 즉시 해제합니다(하나의 비트맵은 최대 64MB의 메모리를 사용할 수 있음). BitmapData.dispose()
를 사용한 후에는 BitmapData 객체를 더 이상 사용할 수 없으므로 BitmapData 객체에 대한 함수를 호출하면 Flash 런타임에서 예외가 발생합니다. 그러나 BitmapData.dispose()
는 BitmapData 객체(약 128바이트)를 대상으로 가비지 수집을 수행하지 않습니다. 따라서 실제 BitmapData 객체가 차지한 메모리는 BitmapData 객체가 가비지 수집기에 의해 수집될 때 해제됩니다.
관련 API 요소
예제 ( 예제 사용 방법 )
dispose()
메서드를 호출한 뒤 BitmapData 객체의 메서드를 호출한 결과를 보여 줍니다(예외 발생).
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 | () | 메서드 |
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Flash 런타임 벡터 렌더러를 사용하여 비트맵 이미지에 source
표시 객체를 그립니다. matrix
, colorTransform
, blendMode
및 대상 clipRect
매개 변수를 지정하면 렌더링 수행 방식을 제어할 수 있습니다. 또한, 비트맵의 크기를 조절할 때 매끄럽게 할 것인지 여부를 선택적으로 지정할 수 있습니다(소스 객체가 BitmapData 객체인 경우에만 적용됨).
참고: drawWithQuality()
메서드는 draw()
메서드와 똑같이 작동합니다. 하지만 벡터 렌더링의 품질을 결정하기 위해 Stage.quality
속성을 사용하는 대신, drawWithQuality()
메서드에 대해 quality
매개 변수를 지정합니다.
이 메서드는 제작 도구 인터페이스에서 객체용 표준 벡터 렌더러를 통해 객체가 그려지는 방식과 직접 연관되어 있습니다.
이 메서드를 호출했을 때 소스 표시 객체는 적용된 변환을 전혀 사용하지 않습니다. 행렬 변환이나 색상 변환, 블렌드 모드 없이, 마치 라이브러리나 파일 내에 존재하는 것처럼 취급됩니다. 자체 변환 속성을 사용하여 동영상 클립과 같은 표시 객체를 그리기 위해 BitmapData 객체를 사용하는 Bitmap 객체의 transform
속성에 해당 transform
속성 객체를 복사할 수 있습니다.
이 메서드는 Flash Player 9.0.115.0 이상 및 Adobe AIR의 RTMP에서 지원됩니다. 서버측 스크립트에서 Flash Media Server의 스트림에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 Adobe Flash Media Server용 서버 측 ActionScript 언어 참조에서 Client.audioSampleAccess
및 Client.videoSampleAccess
속성을 참조하십시오.
source 객체 및 해당하는 모든 자식 객체(Sprite 또는 MovieClip 객체의 경우)가 호출자와 동일한 도메인에서 시작되지 않거나 Security.allowDomain()
메서드를 호출하여 호출자에 액세스할 수 있는 내용에 있지 않은 경우 draw()
에 대한 호출은 SecurityError를 발생시킵니다. 이 제한은 응용 프로그램 보안 샌드박스의 AIR 내용에 적용되지 않습니다.
로드된 비트맵 이미지를 source
로 사용할 때에도 제한 사항이 적용됩니다. draw()
메서드에 대한 호출은 로드된 이미지를 호출자와 동일한 도메인에서 가져오는 경우 성공합니다. 또한 이미지의 서버에 있는 크로스 도메인 정책 파일이 draw()
메서드를 호출하는 SWF 내용의 도메인에 권한을 부여할 수 있습니다. 이 경우 LoaderContext 객체의 checkPolicyFile
속성을 설정하고 이미지를 로드하는 데 사용되는 Loader 객체의 load()
메서드를 호출할 때 LoaderContext 객체를 context
매개 변수로 사용해야 합니다. 이러한 제한 사항은 응용 프로그램 보안 샌드박스의 AIR 내용에 적용되지 않습니다.
Windows에서 draw()
메서드는 Adobe AIR의 HTMLLoader 객체에 있는 HTML 페이지에 포함된 SWF 내용을 캡처할 수 없습니다.
draw()
메서드는 Adobe AIR의 PDF 내용을 캡처할 수 없습니다. 또한 이 메서드는 Adobe AIR의 wmode
특성이 "window"
로 설정되어 있는 HTML에 포함된 SWF 내용을 캡처할 수 없습니다.
매개 변수
source:IBitmapDrawable — BitmapData 객체에 그릴 표시 객체 또는 BitmapData 객체입니다 DisplayObject 및 BitmapData 클래스는 IBitmapDrawable 인터페이스를 구현합니다.
| |
matrix:Matrix (default = null ) — 비트맵 좌표의 크기 조절, 회전 또는 평행 이동에 사용되는 Matrix 객체입니다. 이미지에 행렬 변환을 적용하지 않으려면 이 매개 변수를 기본 new Matrix() 생성자를 통해 만든 단위 행렬로 설정하거나 null 값으로 설정합니다.
| |
colorTransform:flash.geom:ColorTransform (default = null ) — 비트맵의 색상 값 조정에 사용하는 ColorTransform 객체입니다. 제공된 객체가 없으면 비트맵 이미지의 색상이 변환되지 않습니다. 이 매개 변수를 전달하고 이미지는 변환하지 않으려면, 이 매개 변수를 기본 new ColorTransform() 생성자를 통해 만든 ColorTransform 객체로 설정합니다.
| |
blendMode:String (default = null ) — flash.display.BlendMode 클래스에서 얻은 문자열 값으로, 결과 비트맵에 적용될 블렌드 모드를 지정합니다.
| |
clipRect:Rectangle (default = null ) — 소스 객체에서 그릴 영역을 정의하는 Rectangle 객체입니다. 이 값을 제공하지 않으면 어떤 클리핑도 발생하지 않으며 소스 객체 전체가 그려집니다.
| |
smoothing:Boolean (default = false ) — matrix 매개 변수의 크기 또는 회전으로 인해 BitmapData 객체의 크기를 조절하거나 회전할 때 매끄럽게 다듬을 것인지 여부를 결정하는 부울 값입니다. smoothing 매개 변수는 source 매개 변수가 BitmapData 객체인 경우에만 적용됩니다. smoothing 을 false 로 설정하면 회전하거나 크기를 조절한 BitmapData 이미지가 들쭉날쭉한 픽셀로 표시됩니다. 예를 들어 다음 두 이미지가 source 매개 변수에 대해 동일한 BitmapData 객체를 사용하지만, smoothing 매개 변수가 true (왼쪽) 및 false (오른쪽)로 설정됩니다.
비트맵을 그릴 때 |
오류
ArgumentError — source 매개 변수가 BitmapData 또는 DisplayObject 객체가 아닙니다.
| |
SecurityError — source 객체 및 해당하는 모든 자식 객체(Sprite 또는 MovieClip 객체의 경우)가 호출자와 동일한 도메인에 있지 않거나 호출자가 Security.allowDomain() 메서드를 호출하여 액세스할 수 있는 내용에 있지 않습니다. 이 제한은 응용 프로그램 보안 샌드박스의 AIR 내용에 적용되지 않습니다.
| |
ArgumentError — 소스가 null이거나 유효한 IBitmapDrawable 객체가 아닙니다.
|
관련 API 요소
flash.display.Stage.quality
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
예제 ( 예제 사용 방법 )
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);
drawWithQuality | () | 메서드 |
public function drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.3, AIR 3.3 |
Flash 런타임 벡터 렌더러를 사용하여 비트맵 이미지에 source
표시 객체를 그립니다. matrix
, colorTransform
, blendMode
및 대상 clipRect
매개 변수를 지정하면 렌더링 수행 방식을 제어할 수 있습니다. 또한, 비트맵의 크기를 조절할 때 매끄럽게 할 것인지 여부를 선택적으로 지정할 수 있습니다(소스 객체가 BitmapData 객체인 경우에만 적용됨).
참고: drawWithQuality()
메서드는 draw()
메서드와 똑같이 작동합니다. 하지만 벡터 렌더링의 품질을 결정하기 위해 Stage.quality
속성을 사용하는 대신, drawWithQuality()
메서드에 대해 quality
매개 변수를 지정합니다.
이 메서드는 제작 도구 인터페이스에서 객체용 표준 벡터 렌더러를 통해 객체가 그려지는 방식과 직접 연관되어 있습니다.
이 메서드를 호출했을 때 소스 표시 객체는 적용된 변환을 전혀 사용하지 않습니다. 행렬 변환이나 색상 변환, 블렌드 모드 없이, 마치 라이브러리나 파일 내에 존재하는 것처럼 취급됩니다. 자체 변환 속성을 사용하여 동영상 클립과 같은 표시 객체를 그리기 위해 BitmapData 객체를 사용하는 Bitmap 객체의 transform
속성에 해당 transform
속성 객체를 복사할 수 있습니다.
이 메서드는 Flash Player 9.0.115.0 이상 및 Adobe AIR의 RTMP에서 지원됩니다. 서버측 스크립트에서 Flash Media Server의 스트림에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 Client.audioSampleAccess
및 Client.videoSampleAccess
속성(Adobe Flash Media Server용 서버측 ActionScript 언어 참조 설명서)을 참조하십시오.
source 객체 및 해당하는 모든 자식 객체(Sprite 또는 MovieClip 객체의 경우)가 호출자와 동일한 도메인에 속해 있거나, Security.allowDomain()
메서드를 호출하여 호출자에 액세스할 수 있는 내용에 있지 않은 경우 drawWithQuality()
를 호출하면 SecurityError 예외가 발생합니다. 이 제한은 응용 프로그램 보안 샌드박스의 AIR 내용에 적용되지 않습니다.
로드된 비트맵 이미지를 source
로 사용할 때에도 제한 사항이 적용됩니다. 로드된 이미지가 호출자와 동일한 도메인에 속해 있으면 drawWithQuality()
메서드를 호출할 수 있습니다. 또한 이미지의 서버에 있는 크로스 도메인 정책 파일은 drawWithQuality()
메서드를 호출하는 SWF 내용의 도메인에 대한 권한을 부여할 수 있습니다. 이 경우 LoaderContext 객체의 checkPolicyFile
속성을 설정하고 이미지를 로드하는 데 사용되는 Loader 객체의 load()
메서드를 호출할 때 LoaderContext 객체를 context
매개 변수로 사용해야 합니다. 이러한 제한 사항은 응용 프로그램 보안 샌드박스의 AIR 내용에 적용되지 않습니다.
Windows에서 drawWithQuality()
메서드는 Adobe AIR의 HTMLLoader 객체에 있는 HTML 페이지에 포함된 SWF 내용을 캡처할 수 없습니다.
drawWithQuality()
메서드는 Adobe AIR의 PDF 내용을 캡처할 수 없습니다. 또한 이 메서드는 Adobe AIR의 wmode
특성이 "window"
로 설정되어 있는 HTML에 포함된 SWF 내용을 캡처할 수 없습니다.
매개 변수
source:IBitmapDrawable — BitmapData 객체에 그릴 표시 객체 또는 BitmapData 객체입니다 DisplayObject 및 BitmapData 클래스는 IBitmapDrawable 인터페이스를 구현합니다.
| |
matrix:Matrix (default = null ) — 비트맵 좌표의 크기 조절, 회전 또는 평행 이동에 사용되는 Matrix 객체입니다. 이미지에 행렬 변환을 적용하지 않으려면 이 매개 변수를 기본 new Matrix() 생성자를 통해 만든 단위 행렬로 설정하거나 null 값으로 설정합니다.
| |
colorTransform:flash.geom:ColorTransform (default = null ) — 비트맵의 색상 값 조정에 사용하는 ColorTransform 객체입니다. 제공된 객체가 없으면 비트맵 이미지의 색상이 변환되지 않습니다. 이 매개 변수를 전달하고 이미지는 변환하지 않으려면, 이 매개 변수를 기본 new ColorTransform() 생성자를 통해 만든 ColorTransform 객체로 설정합니다.
| |
blendMode:String (default = null ) — flash.display.BlendMode 클래스에서 얻은 문자열 값으로, 결과 비트맵에 적용될 블렌드 모드를 지정합니다.
| |
clipRect:Rectangle (default = null ) — 소스 객체에서 그릴 영역을 정의하는 Rectangle 객체입니다. 이 값을 제공하지 않으면 어떤 클리핑도 발생하지 않으며 소스 객체 전체가 그려집니다.
| |
smoothing:Boolean (default = false ) — matrix 매개 변수의 크기 또는 회전으로 인해 BitmapData 객체의 크기를 조절하거나 회전할 때 매끄럽게 다듬을 것인지 여부를 결정하는 부울 값입니다. smoothing 매개 변수는 source 매개 변수가 BitmapData 객체인 경우에만 적용됩니다. smoothing 을 false 로 설정하면 회전하거나 크기를 조절한 BitmapData 이미지가 들쭉날쭉한 픽셀로 표시됩니다. 예를 들어 다음 두 이미지가 source 매개 변수에 대해 동일한 BitmapData 객체를 사용하지만, smoothing 매개 변수가 true (왼쪽) 및 false (오른쪽)로 설정됩니다.
비트맵을 그릴 때 | |
quality:String (default = null ) — StageQuality 값 중 하나입니다. 벡터 그래픽을 그릴 때 사용할 앤티앨리어싱 품질을 선택합니다.
|
오류
ArgumentError — source 매개 변수가 BitmapData 또는 DisplayObject 객체가 아닙니다.
| |
SecurityError — source 객체 및 해당하는 모든 자식 객체(Sprite 또는 MovieClip 객체의 경우)가 호출자와 동일한 도메인에 있지 않거나 호출자가 Security.allowDomain() 메서드를 호출하여 액세스할 수 있는 내용에 있지 않습니다. 이 제한은 응용 프로그램 보안 샌드박스의 AIR 내용에 적용되지 않습니다.
| |
ArgumentError — 소스가 null이거나 유효한 IBitmapDrawable 객체가 아닙니다.
|
관련 API 요소
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
예제 ( 예제 사용 방법 )
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.drawWithQuality(tf, , , , , , StageQuality.LOW); var bmp:Bitmap = new Bitmap(myBitmapData); this.addChild(bmp);
encode | () | 메서드 |
public function encode(rect:Rectangle, compressor:Object, byteArray:ByteArray = null):ByteArray
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.3, AIR 3.3 |
선택한 압축 알고리즘을 사용하여 이 BitmapData 객체를 압축하고 새 ByteArray 객체를 반환합니다. 지정된 ByteArray에 결과 데이터를 쓸 수도 있습니다. compressor
인수는 인코딩 알고리즘을 지정하며, PNGEncoderOptions, JPEGEncoderOptions 또는 JPEGXREncoderOptions일 수 있습니다.
다음 예제에서는 JPEGEncoderOptions를 사용하여 BitmapData 객체를 압축합니다.
// Compress a BitmapData object as a JPEG file. var bitmapData:BitmapData = new BitmapData(640,480,false,0x00FF00); var byteArray:ByteArray = new ByteArray(); bitmapData.encode(new Rectangle(0,0,640,480), new flash.display.JPEGEncoderOptions(), byteArray);
매개 변수
rect:Rectangle — 압축할 BitmapData 객체의 영역입니다.
| |
compressor:Object — 사용할 압축기 유형입니다. 사용할 수 있는 값은 다음과 같습니다. flash.display.PNGEncoderOptions , flash.display.JPEGEncoderOptions 및 flash.display.JPEGXREncoderOptions
| |
byteArray:ByteArray (default = null ) — 인코딩된 이미지를 유지할 출력 ByteArray입니다.
|
ByteArray — 인코딩된 이미지를 포함하는 ByteArray입니다.
|
관련 API 요소
fillRect | () | 메서드 |
public function fillRect(rect:Rectangle, color:uint):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
사각형의 픽셀 영역을 지정된 ARGB 색상으로 채웁니다.
매개 변수
rect:Rectangle — 채울 사각형 영역입니다.
| |
color:uint — 영역을 채울 ARGB 색상 값입니다. ARGB 색상은 0xFF336699 등과 같이 16진수 형식으로 지정되는 경우가 많습니다.
|
오류
TypeError — rect가 null입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
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 | () | 메서드 |
public function floodFill(x:int, y:int, color:uint):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
(x, y) 좌표에서 시작하는 이미지에 색상 채우기 작업을 수행하여 특정 색상으로 채웁니다. floodFill()
메서드는 다양한 페인팅 프로그램에서 제공하는 페인트 통 도구와 유사합니다. 색상은 알파 정보와 색상 정보가 포함된 ARGB 색상입니다.
매개 변수
x:int — 이미지의 x 좌표입니다.
| |
y:int — 이미지의 y 좌표입니다.
| |
color:uint — 채우기에 사용할 ARGB 색상입니다.
|
예제 ( 예제 사용 방법 )
(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 | () | 메서드 |
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0 |
지정된 BitmapData 객체와 소스 사각형 및 필터 객체를 기준으로 applyFilter()
메서드 호출이 적용될 대상 사각형을 결정합니다.
예를 들어 흐리게 처리하기 필터가 적용되는 영역의 크기는 원본 이미지의 크기보다 더 큽니다. 기본 BlurFilter 인스턴스(blurX = blurY = 4
)를 통해 필터링되는 100 x 200픽셀 이미지는 (-2,-2,104,204)
의 대상 사각형을 생성합니다. generateFilterRect()
메서드를 사용하면 이처럼 대상 사각형의 크기를 미리 확인할 수 있으므로 필터 작업 전에 대상 이미지의 크기를 적절히 조절할 수 있습니다.
일부 필터는 소스 이미지의 크기를 기준으로 대상 사각형을 자릅니다. 예를 들어 내부 DropShadow
를 사용하는 경우에는 소스 이미지보다 더 큰 이미지가 생성되지 않습니다. 이 API에서는 소스 rect
매개 변수가 아니라 BitmapData 객체를 소스 경계로 사용합니다.
매개 변수
sourceRect:Rectangle — 입력 이미지로 사용할 소스 이미지 영역을 정의하는 사각형입니다.
| |
filter:BitmapFilter — 대상 사각형을 계산하는 데 사용할 필터 객체입니다.
|
Rectangle — 이미지, sourceRect 매개 변수 및 필터를 사용하여 계산된 대상 사각형입니다.
|
오류
TypeError — sourceRect 또는 필터가 null입니다.
|
예제 ( 예제 사용 방법 )
generateFilterRect()
메서드를 사용하여 흐림 필터 결과가 차지할 사각형 영역을 결정하는 방법을 보여 줍니다. generateFilterRect()
메서드의 결과는 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()
메서드는 필터를 적용하지 않습니다. 필터를 적용하려면 applyFilter()
메서드를 호출합니다.
getColorBoundsRect | () | 메서드 |
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
비트맵 이미지 내에서 지정된 색상의 픽셀 전체를 완전히 감싸는 사각형 영역(findColor
매개 변수가 true
로 설정된 경우) 또는 지정된 색상을 포함하지 않는 픽셀 전체를 완전히 감싸는 사각형 영역(findColor
매개 변수가 false
로 설정된 경우)을 결정합니다.
예를 들어 소스 이미지에서 0이 아닌 알파 채널을 포함하는 사각형 이미지를 확인하려는 경우, {mask: 0xFF000000, color: 0x00000000}
을 매개 변수로 전달합니다. findColor
매개 변수가 true
로 설정된 경우 (value & mask) == color
인 픽셀의 경계를 전체 이미지에서 검색합니다. 여기서 value
는 픽셀의 색상 값입니다. findColor
매개 변수가 false
로 설정된 경우 (value & mask) != color
인 픽셀의 경계를 전체 이미지에서 검색합니다(여기서 value
는 픽셀의 색상 값). 이미지 주위의 여백 공간을 확인하려면 {mask: 0xFFFFFFFF, color: 0xFFFFFFFF}
를 전달하여 흰색이 아닌 픽셀의 경계를 찾습니다.
매개 변수
mask:uint — 고려할 ARGB 색상 비트 수를 지정하는 16진수 값입니다. 색상 값은 & (bitwise AND) 연산자를 사용하여 이 16진수 값과 결합됩니다.
| |
color:uint — 일치시키거나(findColor 가 true 로 설정된 경우) 일치시키지 않을(findColor 가 false 로 설정된 경우) ARGB 색상을 지정하는 16진수 값입니다.
| |
findColor:Boolean (default = true ) — 값이 true 로 설정된 경우 이미지에서 색상 값의 경계를 반환합니다. false 로 설정된 경우에는 이미지에서 이 색상이 존재하지 않는 영역의 경계를 반환합니다.
|
Rectangle — 지정된 색상으로 구성된 이미지 영역입니다.
|
예제 ( 예제 사용 방법 )
getColorBoundsRect()
메서드를 호출하여 픽셀이 빨간색(0xFF0000)인 사각형을 확인하고, 동일한 메서드를 호출하여 픽셀이 빨간색이 아닌(findColor
매개 변수를 false
로 설정) 사각형을 확인합니다.
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 maskColor:uint = 0xFFFFFF; var color:uint = 0xFF0000; var redBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true); trace(redBounds); // (x=0, y=0, w=80, h=20) var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false); trace(notRedBounds); // (x=0, y=20, w=80, h=20) var bm:Bitmap = new Bitmap(bmd); addChild(bm);
getPixel | () | 메서드 |
public function getPixel(x:int, y:int):uint
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
특정 지점(x, y)에서 BitmapData 객체의 RGB 픽셀 값을 나타내는 정수를 반환합니다. getPixel()
메서드는 곱하지 않은 픽셀 값을 반환합니다. 알파 정보는 반환되지 않습니다.
BitmapData 객체에 포함된 모든 픽셀은 미리 곱해진 색상 값으로 저장됩니다. 미리 곱해진 이미지 픽셀은 알파 데이터가 이미 곱해진 RGB(빨강, 녹색, 파랑) 색상 채널 값을 갖습니다. 예를 들어 알파 값이 0인 경우 RGB 채널 값도 곱해지지 않은 값에 상관없이 0이 됩니다. 이와 같은 데이터 손실로 인해 작업을 수행할 때 몇 가지 문제가 발생할 수 있습니다. 모든 BitmapData 메서드는 곱하지 않은 값을 사용하고 반환합니다. 내부 픽셀 표현은 미리 곱한 값을 곱하지 않은 값으로 변환한 이후에 값으로 반환됩니다. 픽셀 값은 설정 작업에서 원시 이미지 픽셀을 설정하기 전에 미리 곱해집니다.
매개 변수
x:int — 픽셀의 x 위치입니다.
| |
y:int — 픽셀의 y 위치입니다.
|
uint — RGB 픽셀 값을 나타내는 숫자입니다. (x, y) 좌표가 이미지의 경계를 벗어난 경우 0이 반환됩니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
getPixel()
메서드를 사용하여 왼쪽 위 픽셀의 색상 값을 결정합니다.
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000); var pixelValue:uint = bmd.getPixel(0, 0); trace(pixelValue.toString(16)); // ff0000;
getPixel32 | () | 메서드 |
public function getPixel32(x:int, y:int):uint
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
알파 채널 데이터와 RGB 데이터를 포함하는 ARGB 색상 값을 반환합니다. 이 메서드는 알파 채널 데이터 없이 RGB 색상을 반환하는 getPixel()
메서드와 유사합니다.
BitmapData 객체에 포함된 모든 픽셀은 미리 곱해진 색상 값으로 저장됩니다. 미리 곱해진 이미지 픽셀은 알파 데이터가 이미 곱해진 RGB(빨강, 녹색, 파랑) 색상 채널 값을 갖습니다. 예를 들어 알파 값이 0인 경우 RGB 채널 값도 곱해지지 않은 값에 상관없이 0이 됩니다. 이와 같은 데이터 손실로 인해 작업을 수행할 때 몇 가지 문제가 발생할 수 있습니다. 모든 BitmapData 메서드는 곱하지 않은 값을 사용하고 반환합니다. 내부 픽셀 표현은 미리 곱한 값을 곱하지 않은 값으로 변환한 이후에 값으로 반환됩니다. 픽셀 값은 설정 작업에서 원시 이미지 픽셀을 설정하기 전에 미리 곱해집니다.
매개 변수
x:int — 픽셀의 x 위치입니다.
| |
y:int — 픽셀의 y 위치입니다.
|
uint — ARGB 픽셀 값을 나타내는 숫자입니다. (x, y) 좌표가 이미지 경계를 벗어난 경우 0이 반환됩니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
getPixel32()
메서드를 사용하여 왼쪽 위 픽셀의 색상 값을 결정하고 각 색상 구성 요소(알파, 빨강, 녹색 및 파랑)의 16진수 값을 결정합니다.
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC); var pixelValue:uint = bmd.getPixel32(0, 0); var alphaValue:uint = pixelValue >> 24 & 0xFF; var red:uint = pixelValue >> 16 & 0xFF; var green:uint = pixelValue >> 8 & 0xFF; var blue:uint = pixelValue & 0xFF; trace(alphaValue.toString(16)); // ff trace(red.toString(16)); // 44 trace(green.toString(16)); // aa trace(blue.toString(16)); // cc
getPixels | () | 메서드 |
public function getPixels(rect:Rectangle):ByteArray
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
픽셀 데이터의 사각형 영역에서 바이트 배열을 생성합니다. 픽셀별로 부호 없는 정수(곱하지 않은 32비트 픽셀 값)를 바이트 배열에 씁니다.
매개 변수
rect:Rectangle — 현재 BitmapData 객체의 사각형 영역입니다.
|
ByteArray — 해당 Rectangle의 픽셀을 나타내는 ByteArray입니다.
|
오류
TypeError — rect가 null입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
getPixels()
메서드를 사용하여 ByteArray 객체를 BitmapData 객체의 픽셀 값으로 채웁니다.
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);
getVector | () | 메서드 |
public function getVector(rect:Rectangle):Vector.<uint>
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
픽셀 데이터의 사각형 영역에서 벡터 배열을 생성합니다. 지정된 사각형에 대한 부호 없는 정수(곱하지 않는 32비트 픽셀 값)의 Vector 객체를 반환합니다.
매개 변수
rect:Rectangle — 현재 BitmapData 객체의 사각형 영역입니다.
|
Vector.<uint> — 해당 Rectangle을 나타내는 Vector입니다.
|
오류
TypeError — rect가 null입니다.
|
histogram | () | 메서드 |
public function histogram(hRect:Rectangle = null):Vector.<Vector.<Number>>
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
BitmapData 객체의 256 값 이진 숫자 막대 그래프를 계산합니다. 이 메서드는 네 개의 Vector.<Number> 인스턴스(Number 객체를 포함하는 네 개의 Vector 객체)를 포함하는 Vector 객체를 반환합니다. 네 개의 Vector 인스턴스는 순서대로 빨강, 녹색, 파랑 및 알파 구성 요소를 나타냅니다. 각 Vector 인스턴스에는 개별 구성 요소 값의 채우기 수를 나타내는 256개의 값(0에서 255까지)이 포함되어 있습니다.
매개 변수
hRect:Rectangle (default = null ) — 사용할 BitmapData 객체의 영역입니다.
|
Vector.<Vector.<Number>> |
hitTest | () | 메서드 |
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
하나의 비트맵 이미지와 특정한 점, 사각형 또는 다른 비트맵 이미지 간의 픽셀 수준 히트 감지를 수행합니다. 히트는 점이나 사각형이 불투명 픽셀 위에 겹치거나 두 불투명 픽셀이 서로 겹치는 것으로 정의됩니다. 히트 테스트를 수행할 때 어느 한 객체의 확장이나 회전 또는 기타 변환은 고려하지 않습니다.
불투명 이미지의 경우 이 메서드에서는 완전 불투명 사각형으로 간주됩니다. 투명도를 고려하는 픽셀 수준의 히트 테스트를 수행하려면 두 개의 이미지 모두 투명 이미지라야 합니다. 두 개의 투명 이미지를 테스트할 때 알파 임계값 매개 변수는 0에서 255 사이 범위에서 어떤 알파 채널 값이 불투명으로 간주되는지 제어합니다.
매개 변수
firstPoint:Point — 임의의 좌표 영역에서 BitmapData 이미지의 왼쪽 위 모서리 위치입니다. 동일한 좌표 공간이 secondBitmapPoint 매개 변수를 정의하는 데 사용됩니다.
| |
firstAlphaThreshold:uint — 이 히트 테스트에서 불투명으로 간주되는 최소 알파 채널 값입니다.
| |
secondObject:Object — Rectangle, Point, Bitmap 또는 BitmapData 객체입니다.
| |
secondBitmapDataPoint:Point (default = null ) — 두 번째 BitmapData 객체에서 픽셀 위치를 정의하는 점입니다. secondObject 값이 BitmapData 객체일 때만 이 매개 변수를 사용합니다.
| |
secondAlphaThreshold:uint (default = 1 ) — 두 번째 BitmapData 객체에서 불투명으로 간주되는 최소 알파 채널 값입니다. secondObject 값이 BitmapData 객체이고 두 BitmapData 객체가 모두 투명 객체일 때만 이 매개 변수를 사용합니다.
|
Boolean — 히트가 발생하면 값이 true 이고, 그렇지 않으면 false 입니다.
|
오류
ArgumentError — secondObject 매개 변수가 Point, Rectangle, Bitmap 또는 BitmapData 객체가 아닙니다.
| |
TypeError — firstPoint가 null입니다.
|
예제 ( 예제 사용 방법 )
secondObject
로 삼아 hitTest()
메서드를 호출합니다. 첫 번째 호출에서 Point 객체는 BitmapData 객체의 왼쪽 위 모서리(투명)를 정의하고, 두 번째 호출에서 Point 객체는 BitmapData 객체의 가운데(불투명)를 정의합니다.
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 | () | 메서드 |
public function lock():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0 |
이 BitmapData 객체를 변경할 때 BitmapData 객체를 참조하는 어떤 객체(예: Bitmap 객체)도 업데이트되지 않도록 이미지를 잠급니다. 성능을 높이려면 setPixel()
또는 setPixel32()
메서드를 여러 차례 호출하기 전후에 이 메서드를 unlock()
메서드와 함께 사용합니다.
관련 API 요소
예제 ( 예제 사용 방법 )
picture
의 bitmapData
속성을 기반으로 BitmapData 객체를 만듭니다. 그리고 나서 lock()
메서드를 호출한 다음 BitmapData 객체를 수정하는 복잡한 사용자 정의 함수인 complexTransformation()
을 호출합니다. picture
객체 및 complexTransformation()
함수는 이 예제에서 정의하지 않습니다. complexTransformation()
함수가 picture
객체의 bitmapData
속성을 업데이트하더라도 코드가 bitmapData
객체에서 unlock()
메서드를 호출하기 전까지는 변경 사항이 반영되지 않습니다.
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
merge | () | 메서드 |
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
소스 이미지에서 대상 이미지로 채널별 블렌드를 수행합니다. 각 채널과 픽셀에 대해 소스 및 대상 픽셀의 채널 값에 따라 새 값이 계산됩니다. 예를 들어 빨강 채널에서 다음과 같은 새 값이 계산됩니다. 여기서 redSrc
는 소스 이미지의 픽셀에 대한 빨강 채널 값이고 redDest
는 대상 이미지의 해당 픽셀에 대한 빨강 채널 값입니다.
new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;
redMultiplier
, greenMultiplier
, blueMultiplier
및 alphaMultiplier
값은 각 색상 채널에 사용된 승수입니다. 0
~ 0x100
(256) 범위의 16진수 값을 사용하며 여기서 0
은 대상의 전체 값이 결과에서 사용됨을 지정하고, 0x100
은 소스의 전체 값이 사용됨을 지정하며, 사이의 숫자는 블렌드가 사용됨을 지정합니다(예: 50%의 경우 0x80
).
매개 변수
sourceBitmapData:BitmapData — 사용할 입력 비트맵 이미지입니다. 소스 이미지는 다른 BitmapData 객체가 될 수도 있고 현재 BitmapData 객체를 참조할 수도 있습니다.
| |
sourceRect:Rectangle — 입력 이미지로 사용할 소스 이미지 영역을 정의하는 사각형입니다.
| |
destPoint:Point — 소스 사각형의 왼쪽 위 모서리에 해당하는 대상 이미지(현재 BitmapData 인스턴스) 내부의 점입니다.
| |
redMultiplier:uint — 빨강 채널 값을 곱하는 16진수 단위 값입니다.
| |
greenMultiplier:uint — 녹색 채널 값을 곱하는 16진수 단위 값입니다.
| |
blueMultiplier:uint — 파랑 채널 값을 곱하는 16진수 단위 값입니다.
| |
alphaMultiplier:uint — 알파 투명도 값을 곱하는 16진수 단위 값입니다.
|
오류
TypeError — sourceBitmapData, sourceRect 또는 destPoint가 null입니다.
|
예제 ( 예제 사용 방법 )
merge()
메서드를 호출하여 지정된 사각형 영역에 한해 두 번째 BitmapData 픽셀을 첫 번째 BitmapData 객체에 병합합니다.
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 | () | 메서드 |
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0 |
임의의 노이즈를 나타내는 픽셀로 이미지를 채웁니다.
매개 변수
randomSeed:int — 사용할 난수 초기값입니다. 다른 매개 변수가 모두 동일할 경우 난수 초기값을 변경하면 다양한 의사 난수 결과를 얻을 수 있습니다. 노이즈 함수는 진정한 의미의 난수 생성 함수가 아니라 매핑 함수이기 때문에 같은 난수 초기값을 입력하면 매번 같은 결과가 나옵니다.
| |
low:uint (default = 0 ) — 각 채널에 대해 생성할 최저 값입니다(0 ~ 255).
| |
high:uint (default = 255 ) — 각 채널에 대해 생성할 최고 값입니다(0 ~ 255).
| |
channelOptions:uint (default = 7 ) — 네 가지 색상 채널 값(BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN 및 BitmapDataChannel.ALPHA )을 임의로 결합한 숫자입니다. logical OR 연산자(| )를 사용하여 채널 값을 결합할 수 있습니다.
| |
grayScale:Boolean (default = false ) — 부울 값. 값이 true 인 경우 모든 색상 채널 값을 동일하게 설정하여 회색 음영 이미지를 만듭니다. 이 매개 변수를 true 로 설정해도 알파 채널 선택에는 영향을 미치지 않습니다.
|
관련 API 요소
flash.display.BitmapDataChannel.BLUE
flash.display.BitmapDataChannel.GREEN
flash.display.BitmapDataChannel.ALPHA
예제 ( 예제 사용 방법 )
noise()
메서드를 호출합니다. 그러나 첫 번째 객체의 noise()
메서드를 호출할 때는 grayscale
매개 변수를 false
로 설정하고 두 번째 객체의 noise()
메서드를 호출할 때는 이 매개 변수를 true
로 설정합니다.
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 | () | 메서드 |
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
각 채널에 하나씩 최대 네 개까지의 색상 팔레트 데이터 배열이 있는 이미지에서 색상 채널 값을 다시 매핑합니다.
Flash 런타임에서는 다음 단계를 사용하여 결과 이미지를 생성합니다.
- 빨강, 녹색, 파랑 및 알파 값을 계산한 후, 표준 32비트 정수 계산법을 사용하여 그 값들을 모두 더합니다.
- 각 픽셀의 빨강, 녹색, 파랑 및 알파 채널 값을 각각 0에서 255 사이의 값으로 추출합니다. 이러한 값을 사용하여 새 색상 값을
redArray
,greenArray
,blueArray
,alphaArray
등의 적절한 배열로 조회합니다. 이와 같은 네 개의 배열에는 각각 256 값이 포함되어야 합니다. - 네 개의 새 채널 값이 모두 검색되면 채널 값을 결합하여 픽셀에 적용할 하나의 표준 ARGB 값으로 만듭니다.
이 메서드에서는 채널 간 효과를 지원할 수 있습니다. 각각의 입력 배열은 32비트 값을 포함할 수 있고 값을 서로 더할 때 이동은 없습니다. 이 루틴은 채널별 고정은 지원하지 않습니다.
채널에 대해 지정된 배열이 없으면 소스 이미지에서 대상 이미지로 색상 채널이 복사됩니다.
이 메서드는 일반 팔레트 매핑(채널 하나를 택해 이를 false 색상 이미지로 변환하는 방법) 등과 같은 다양한 효과에 활용할 수 있습니다. 감마, 커브, 레벨, 양자화와 같은 다양한 고급 색상 조작 알고리즘에도 이 메서드를 사용할 수 있습니다.
매개 변수
sourceBitmapData:BitmapData — 사용할 입력 비트맵 이미지입니다. 소스 이미지는 다른 BitmapData 객체일 수도 있고 현재 BitmapData 인스턴스를 참조할 수도 있습니다.
| |
sourceRect:Rectangle — 입력 이미지로 사용할 소스 이미지 영역을 정의하는 사각형입니다.
| |
destPoint:Point — 소스 사각형의 왼쪽 위 모서리에 해당하는 대상 이미지(현재 BitmapData 객체) 내부의 점입니다.
| |
redArray:Array (default = null ) — redArray 가 null 이 아닌 경우 red = redArray[source red value] else red = source rect value 입니다.
| |
greenArray:Array (default = null ) — greenArray 가 null 이 아닌 경우 green = greenArray[source green value] else green = source green value. 입니다.
| |
blueArray:Array (default = null ) — blueArray 가 null 이 아닌 경우 blue = blueArray[source blue value] else blue = source blue value 입니다.
| |
alphaArray:Array (default = null ) — alphaArray 가 null 이 아닌 경우 alpha = alphaArray[source alpha value] else alpha = source alpha value 입니다.
|
오류
TypeError — sourceBitmapData, sourceRect 또는 destPoint가 null입니다.
|
예제 ( 예제 사용 방법 )
paletteMap()
메서드를 사용하여 BitmapData 객체 사각형의 아래쪽 절반을 빨간색에서 녹색으로 교체합니다.
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 | () | 메서드 |
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
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0 |
Perlin 노이즈 이미지를 생성합니다.
Perlin 노이즈 생성 알고리즘은 옥타브라는 개별 임의의 노이즈 함수를 보다 자연스럽게 보이는 임의의 노이즈를 발생시키는 단일 함수에 삽입하고 결합합니다. 음악의 옥타브와 마찬가지로 각 옥타브 함수의 진동수는 선행 옥타브 함수의 두 배가 됩니다. Perlin 노이즈는 세부 정도가 서로 다른 다양한 노이즈 데이터 세트를 결합하기 때문에 "노이즈의 프랙탈 합"으로 설명되었습니다.
Perlin 노이즈 함수는 나뭇결, 구름, 산맥 등과 같은 자연 현상이나 풍경을 시뮬레이션하는 데 사용할 수 있습니다. 대부분의 경우 Perlin 노이즈 함수의 결과는 직접 표시되지는 않지만 다른 이미지를 개선하고 의사 난수 변형을 제공하는 데 사용됩니다.
단순한 디지털 노이즈 함수는 거칠고 대비가 심한 이미지를 생성합니다. 자연에서는 이와 같이 거친 대비를 좀처럼 찾아보기 어렵습니다. Perlin 노이즈 알고리즘은 서로 다른 세부 레벨에서 작동하는 여러 노이즈 함수를 혼합합니다. 이 알고리즘을 사용하면 인접한 픽셀 값 간의 차이가 작아집니다.
매개 변수
baseX:Number — x 방향에서 사용할 진동수입니다. 예를 들어 64 x 128 이미지에 맞는 크기의 노이즈를 생성하려면 baseX 값에 64를 전달해야 합니다.
| |
baseY:Number — y 방향에서 사용할 진동수입니다. 예를 들어 64 x 128 이미지에 맞는 크기의 노이즈를 생성하려면 baseY 값에 128을 전달해야 합니다.
| |
numOctaves:uint — 이 노이즈를 만들기 위해 결합할 옥타브, 즉 개별 노이즈 함수의 수입니다. 옥타브의 수가 많아질수록 보다 상세한 이미지가 만들어집니다. 또한 옥타브의 수가 많아질수록 처리 시간도 더 많이 소요됩니다.
| |
randomSeed:int — 사용할 난수 초기값입니다. 다른 매개 변수가 모두 동일할 경우 난수 초기값을 변경하면 다양한 의사 난수 결과를 얻을 수 있습니다. Perlin 노이즈 함수는 진정한 의미의 난수 생성 함수가 아니라 매핑 함수이기 때문에 같은 난수 초기값을 입력하면 같은 결과가 생성됩니다.
| |
stitch:Boolean — 부울 값. 값이 true 이면 이 메서드는 비트맵 채우기 작업 시 매끄러운 경사면 질감을 만들어내기 위해 이미지의 가장자리를 부드럽게 다듬고자 시도합니다.
| |
fractalNoise:Boolean — 부울 값. 값이 true 이면 이 메서드는 프랙탈 노이즈를 생성하고, 그렇지 않으면 휘몰아치기를 생성합니다. 휘몰아치기가 포함된 이미지는 그래디언트에서 불연속 선이 드러나기 때문에 불꽃과 파도와 같은 날카로운 시각적 효과를 만드는 데 적합합니다.
| |
channelOptions:uint (default = 7 ) — 네 가지 색상 채널 값(BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN 및 BitmapDataChannel.ALPHA )을 임의로 결합한 숫자입니다. logical OR 연산자(| )를 사용하여 채널 값을 결합할 수 있습니다.
| |
grayScale:Boolean (default = false ) — 부울 값. 값이 true 이면 빨강, 녹색 및 파랑 색상 채널을 모두 같은 값으로 설정하여 회색 음영 이미지를 생성합니다. 이 값을 true 로 설정해도 알파 채널 값에는 영향을 미치지 않습니다.
| |
offsets:Array (default = null ) — 각 옥타브의 x 및 y 오프셋에 해당하는 점 배열입니다. 오프셋 값을 조작하면 perlinNoise 이미지 레이어를 부드럽게 스크롤할 수 있습니다. 오프셋 배열의 각 점은 특정 옥타브 노이즈 함수에 영향을 미칩니다.
|
예제 ( 예제 사용 방법 )
perlinNoise()
메서드를 호출하여 빨강 및 파랑 수채화 효과를 생성하는 200 x 200픽셀의 BitmapData 객체를 만듭니다.
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 | () | 메서드 |
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0 |
소스 이미지에서 대상 이미지로, 혹은 같은 이미지를 사용하여 픽셀 디졸브(dissolve)를 수행합니다. Flash 런타임에서는 randomSeed
값을 사용하여 임의의 픽셀 디졸브를 생성합니다. 픽셀 디졸브가 완료될 때까지 해제를 지속하기 위해서는 함수의 반환 값을 다음 호출에서 전달해야 합니다.
소스 이미지가 대상 이미지와 일치하지 않는 경우, 모든 속성을 그대로 사용하여 소스에서 대상으로 픽셀이 복사됩니다. 이 과정에서 빈 이미지에서 가득찬 이미지로 디졸브가 가능합니다.
소스 이미지와 대상 이미지가 일치하는 경우에는 color
매개 변수 값으로 픽셀이 채워집니다. 이를 통해 가득찬 이미지를 디졸브해서 지울 수 있습니다. 이 경우 대상 point
매개 변수는 무시됩니다.
매개 변수
sourceBitmapData:BitmapData — 사용할 입력 비트맵 이미지입니다. 소스 이미지는 다른 BitmapData 객체일 수도 있고 현재 BitmapData 인스턴스를 참조할 수도 있습니다.
| |
sourceRect:Rectangle — 입력 이미지로 사용할 소스 이미지 영역을 정의하는 사각형입니다.
| |
destPoint:Point — 소스 사각형의 왼쪽 위 모서리에 해당하는 대상 이미지(현재 BitmapData 인스턴스) 내부의 점입니다.
| |
randomSeed:int (default = 0 ) — 픽셀 디졸브를 시작하는 데 사용할 난수 초기값입니다.
| |
numPixels:int (default = 0 ) — 기본값은 소스 영역(폭 x 높이)의 1/30입니다.
| |
fillColor:uint (default = 0 ) — 소스 값이 대상 값과 동일한 픽셀을 채우는 데 사용할 ARGB 색상 값입니다.
|
int — 후속 호출에 사용할 새 난수 초기값입니다.
|
오류
TypeError — sourceBitmapData, sourceRect 또는 destPoint가 null입니다.
| |
TypeError — numPixels 값이 음수입니다.
|
예제 ( 예제 사용 방법 )
pixelDissolve()
메서드를 통해 픽셀의 색상이 모두 변경될 때까지 한 번에 40픽셀씩 디졸브하여 회색 BitmapData 객체를 빨강 객체로 변환합니다.
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 | () | 메서드 |
public function scroll(x:int, y:int):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0 |
이미지를 특정 픽셀 수(x, y)만큼 스크롤합니다. 스크롤 영역 밖의 가장자리 영역은 변하지 않습니다.
매개 변수
x:int — 가로 방향으로 스크롤할 크기입니다.
| |
y:int — 세로 방향으로 스크롤할 크기입니다.
|
예제 ( 예제 사용 방법 )
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 | () | 메서드 |
public function setPixel(x:int, y:int, color:uint):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
BitmapData 객체의 단일 픽셀을 설정합니다. 이 작업이 이루어지는 동안 이미지 픽셀의 현재 알파 채널 값은 그대로 보존됩니다. RGB color 매개 변수 값은 곱해지지 않은 색상 값으로 취급됩니다.
참고: setPixel()
또는 setPixel32()
메서드를 반복해서 사용할 때 성능을 향상시키려면 setPixel()
또는 setPixel32()
메서드를 호출하기 전에 lock()
메서드를 호출하고, 픽셀 변경을 모두 마치고 나면 unlock()
메서드를 호출합니다. 이 프로세스는 픽셀 변경을 모두 마치기 전까지 이 BitmapData 인스턴스를 참조하는 객체가 업데이트되지 않도록 합니다.
매개 변수
x:int — 값이 변경되는 픽셀의 x 위치입니다.
| |
y:int — 값이 변경되는 픽셀의 y 위치입니다.
| |
color:uint — 픽셀의 최종 RGB 색상입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
setPixel()
메서드를 사용하여 BitmapData 객체에 빨간색 선을 그립니다.
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 | () | 메서드 |
public function setPixel32(x:int, y:int, color:uint):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
BitmapData 객체의 단일 픽셀에 대한 색상 및 알파 투명도 값을 설정합니다. 이 메서드는 setPixel()
메서드와 유사하지만, setPixel32()
메서드의 경우 알파 채널 정보가 포함된 ARGB 색상 값을 사용한다는 점이 다릅니다.
BitmapData 객체에 포함된 모든 픽셀은 미리 곱해진 색상 값으로 저장됩니다. 미리 곱해진 이미지 픽셀은 알파 데이터가 이미 곱해진 RGB(빨강, 녹색, 파랑) 색상 채널 값을 갖습니다. 예를 들어 알파 값이 0인 경우 RGB 채널 값도 곱해지지 않은 값에 상관없이 0이 됩니다. 이와 같은 데이터 손실로 인해 작업을 수행할 때 몇 가지 문제가 발생할 수 있습니다. 모든 BitmapData 메서드는 곱하지 않은 값을 사용하고 반환합니다. 내부 픽셀 표현은 미리 곱한 값을 곱하지 않은 값으로 변환한 이후에 값으로 반환됩니다. 픽셀 값은 설정 작업에서 원시 이미지 픽셀을 설정하기 전에 미리 곱해집니다.
참고: setPixel()
또는 setPixel32()
메서드를 반복해서 사용할 때 성능을 향상시키려면 setPixel()
또는 setPixel32()
메서드를 호출하기 전에 lock()
메서드를 호출하고, 픽셀 변경을 모두 마치고 나면 unlock()
메서드를 호출합니다. 이 프로세스는 픽셀 변경을 모두 마치기 전까지 이 BitmapData 인스턴스를 참조하는 객체가 업데이트되지 않도록 합니다.
매개 변수
x:int — 값이 변경되는 픽셀의 x 위치입니다.
| |
y:int — 값이 변경되는 픽셀의 y 위치입니다.
| |
color:uint — 픽셀의 최종 ARGB 색상입니다. 비트맵이 투명이 아니고 불투명인 경우 이 색상 값의 알파 투명도 부분은 무시됩니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
setPixel32()
메서드를 사용하여 BitmapData 객체에 투명한(alpha == 0x60) 빨간색 선을 그립니다.
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 | () | 메서드 |
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0, Flash Lite 4 |
바이트 배열을 픽셀 데이터의 사각형 영역으로 변환합니다. 각 픽셀에 대해 ByteArray.readUnsignedInt()
메서드가 호출되며, 반환 값이 해당 픽셀에 쓰여집니다. 사각형 전체를 쓰기 전에 바이트 배열이 끝나면 함수가 반환됩니다. 바이트 배열의 데이터는 32비트 ARGB 픽셀 값이여야 합니다. 픽셀 읽기 전후에는 바이트 배열에서 어떤 검색도 수행되지 않습니다.
매개 변수
rect:Rectangle — BitmapData 객체의 사각형 영역을 지정합니다.
| |
inputByteArray:ByteArray — 사각형 영역에서 사용할 곱하지 않은 32비트 픽셀 값으로 구성된 ByteArray 객체입니다.
|
오류
EOFError — inputByteArray 객체에 rect 사각형 영역을 채울 데이터가 충분하지 않습니다. 메서드가 최대한 많은 픽셀을 채운 후 예외가 발생합니다.
| |
TypeError — rect 또는 inputByteArray가 null입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
getPixels()
및 setPixels()
메서드를 사용하여 한 BitmapData 객체에서 다른 객체로 픽셀을 복사합니다.
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;
setVector | () | 메서드 |
public function setVector(rect:Rectangle, inputVector:Vector.<uint>):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
벡터를 픽셀 데이터의 사각형 영역으로 변환합니다. 각 픽셀마다 Vector 요소가 읽히고 BitmapData 픽셀로 작성됩니다. Vector에 포함된 데이터는 32비트 ARGB 픽셀 값이어야 합니다.
매개 변수
rect:Rectangle — BitmapData 객체의 사각형 영역을 지정합니다.
| |
inputVector:Vector.<uint> — 사각형 영역에서 사용할 곱하지 않은 32비트 픽셀 값으로 구성된 Vector 객체입니다.
|
오류
RangeError — 벡터 배열이 모든 픽셀 데이터를 읽을 만큼 크지 않습니다.
|
threshold | () | 메서드 |
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0 |
이미지의 픽셀 값을 지정된 임계값 기준으로 테스트하고 그 테스트를 통과한 픽셀을 새 색상 값으로 설정합니다. threshold()
메서드를 사용하면 이미지에서 색상 범위를 분리 및 대체할 수 있고 이미지 픽셀에서 다른 논리 연산을 수행할 수 있습니다.
threshold()
메서드의 테스트 논리는 다음과 같습니다.
((pixelValue & mask) operation (threshold & mask))
인 경우 픽셀을color
로 설정합니다.- 그렇지 않고
copySource == true
인 경우 픽셀을sourceBitmap
의 해당 픽셀 값으로 설정합니다.
operation
매개 변수는 임계값 테스트에 사용할 비교 연산자를 지정합니다. 예를 들어 "=="를 operation
매개 변수로 사용함으로써 이미지에서 특정 색상 값을 분리할 수 있습니다. 또는 {operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000}
을 사용하여 소스 이미지 픽셀의 알파가 0x7F보다 작을 때 모든 대상 픽셀을 완전히 투명해지도록 설정할 수 있습니다. 이 기법을 사용하여 애니메이션 전환 효과 및 기타 효과를 생성할 수 있습니다.
매개 변수
sourceBitmapData:BitmapData — 사용할 입력 비트맵 이미지입니다. 소스 이미지는 현재의 BitmapData 인스턴스를 가리킬 수도 있고 혹은 다른 BitmapData 객체가 될 수도 있습니다.
| |
sourceRect:Rectangle — 입력 이미지로 사용할 소스 이미지 영역을 정의하는 사각형입니다.
| |
destPoint:Point — 소스 사각형의 왼쪽 위 모서리에 해당하는 대상 이미지(현재 BitmapData 인스턴스) 내부의 점입니다.
| |
operation:String — 다음 비교 연산자 중 하나로, 문자열로 전달됩니다. "<", "<=", ">", ">=", "==", "!="
| |
threshold:uint — 각 픽셀이 임계값을 충족하는지 아니면 초과하는지 확인하기 위해 각 픽셀을 테스트하는 값입니다.
| |
color:uint (default = 0 ) — 임계값 테스트에 통과할 경우 픽셀에 설정할 색상 값입니다. 기본값은 0x00000000입니다.
| |
mask:uint (default = 0xFFFFFFFF ) — 색상 구성 요소를 분리하는 데 사용할 마스크입니다.
| |
copySource:Boolean (default = false ) — 값이 true 이면 임계값 테스트에 통과하지 못할 경우 소스 이미지의 픽셀 값이 대상으로 복사됩니다. 값이 false 이면 임계값 테스트를 통과하지 못할 경우 소스 이미지가 복사되지 않습니다.
|
uint — 변경된 픽셀 수입니다.
|
오류
TypeError — sourceBitmapData, sourceRect destPoint 또는 연산이 null입니다.
| |
ArgumentError — 연산 문자열이 유효한 연산이 아닙니다.
|
예제 ( 예제 사용 방법 )
perlinNoise()
메서드를 사용하여 한 BitmapData 객체에 파란색과 빨간색 패턴을 추가합니다. 그런 다음 threshold()
메서드를 사용하여 이 픽셀을 첫 번째 BitmapData 객체에서 두 번째 객체로 복사하며, 빨간색 값이 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 | () | 메서드 |
public function unlock(changeRect:Rectangle = null):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 9, AIR 1.0 |
이 BitmapData 객체를 변경할 때 BitmapData 객체를 참조하는 임의의 객체(예: Bitmap 객체)도 업데이트되도록 이미지 잠금을 해제합니다. 성능을 높이려면 setPixel()
또는 setPixel32()
메서드를 여러 차례 호출하기 전후에 이 메서드를 lock()
메서드와 함께 사용합니다.
매개 변수
changeRect:Rectangle (default = null ) — 변경된 BitmapData 객체 영역입니다. 이 매개 변수의 값을 지정하지 않을 경우 BitmapData 객체의 전체 영역이 변경된 것으로 간주됩니다. 이 매개 변수에는 Flash Player 버전 9.0.115.0 이상이 필요합니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
picture
의 bitmapData
속성을 기반으로 BitmapData 객체를 만듭니다. 그리고 나서 lock()
메서드를 호출한 다음 BitmapData 객체를 수정하는 복잡한 사용자 정의 함수인 complexTransformation()
을 호출합니다. picture
객체 및 complexTransformation()
함수는 이 예제에서 정의하지 않습니다. complexTransformation()
함수가 picture
객체의 bitmapData
속성을 업데이트하더라도 코드가 bitmapData
객체에서 unlock()
메서드를 호출하기 전까지는 변경 사항이 반영되지 않습니다.
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
threshold()
메서드를 사용한 텍스트를 통과하는 픽셀에는 새 색상이 적용됩니다. 이 작업은 다음 단계를 사용하여 수행됩니다.
- 이미지 파일의 이름과 위치를 나타내는
url
속성이 만들어집니다. - 클래스 생성자가 Loader 객체를 만들고 이 객체는
completeHandler()
메서드에서 이미지 조작을 완료했을 때 전달되는 이벤트 리스너를 인스턴스화합니다. request
URLRequest 객체가 표시 객체를 사용하여 이미지를 메모리에 로드하는loader.load()
에 전달됩니다.- 이제 이미지가 표시 목록에 놓이고 화면의 x = 0, y = 0 좌표에 표시됩니다.
completeHandler()
메서드는 다음 작업을 수행합니다.- 두 번째 Loader를 Bitmap 객체와 함께 만들며, 이 Bitmap 객체는 Loader 객체와 함께 초기화됩니다.
- 두 번째 Bitmap 객체인
duplicate
를 만든 뒤duplicateImage()
메서드를 호출하여 원본 이미지의 복제본을 만듭니다. - BitmapData 객체를 만듭니다. 이 객체는
duplicate
객체의 BitmapData 객체에 할당됩니다. - 원본 이미지와 동일한 좌표, 폭, 높이로 초기화된 새 Rectangle 객체를 만듭니다.
- 기본값이 x = 0, y = 0인 새 Point 객체를 만듭니다.
- 다음과 같은 변수를 만듭니다.
operation
- 임계값이 원래 값보다 크거나 같은 경우 새 색상을 적용합니다.threshold
- 각 픽셀의 비교 대상 값(이 예제에서는 알파가 0xCC인 밝은 회색)입니다.color
- 임계값 테스트를 통과한 픽셀이 설정되는 색상으로, 이 경우에는 단색 노랑입니다.mask
- 정반대 색상(투명 파랑)입니다.copySource
-false
로 설정되어 임계값이 통과하지 못할 경우 픽셀 값이 복사되지 않음을 나타냅니다. 하지만 이미지는 복제되어 있고 임계값 테스트를 통과한 픽셀만 변경되기 때문에 이 값은 아무 의미가 없습니다.
- 앞서 나온 변수를 사용하여
threshold()
메서드를 호출합니다. 최종 임계값 수식은if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00
입니다.
참고:
- [로컬 재생 보안]을 [로컬 파일만 액세스]로 설정하여 SWF 파일을 컴파일해야 합니다.
- 이 예제에서는 SWF 파일과 같은 디렉토리에 Image.gif 파일이 있어야 합니다.
- 폭이 최대 80픽셀 정도인 이미지를 사용하는 것이 좋습니다.
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); } } }
Tue Jun 12 2018, 03:17 PM Z