본문 바로가기

Flex

bitmapData getPixel 사용하기

package {
	import flash.display.Bitmap;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLRequest;
	
	[SWF(width="1000", height="1000", frameRate="24", backgroundColor="#FFFFFF")]
	
	public class bitmapDataHandle extends Sprite
	{
		private var container:Sprite;
		private var bitmap:Bitmap;
		private var loader:Loader;
		public function bitmapDataHandle()
		{
			loader = new Loader();
			loader.load(new URLRequest("cat.jpg"));
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler);
		}
		
		private function loadHandler(e:Event):void
		{
			loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadHandler);
			bitmap = loader.content as Bitmap;
			loader.unload();
			
			container = new Sprite();
			container.addChild(bitmap);
			container.addEventListener(MouseEvent.CLICK, clickHandler);
			addChild(container);
			
		}
		
		private function clickHandler(e:MouseEvent):void
		{
			var pixelValue:uint = bitmap.bitmapData.getPixel(mouseX,mouseY);
			trace("x : "+mouseX+" y: "+mouseY);
			trace("선택한 곳의 색상값 : "+pixelValue.toString(16));
		}
	}
}

까페에 질문글이 올라와서 급조한 테스트..

bitmapData에는 pixel을 이용해서 여러가지 작업을 할수 있다. 그중에 getPixel은 선택한 곳의 해당 픽셀값을 가져온다.

 

getPixels () 메서드  

public function getPixels(rect:Rectangle):ByteArray
언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0, Flash Player 9

픽셀 데이터의 사각형 영역에서 바이트 배열을 생성합니다. 픽셀별로 부호 없는 정수(곱하지 않은 32비트 픽셀 값)를 바이트 배열에 씁니다.

매개 변수

rect:Rectangle — 현재 BitmapData 객체의 사각형 영역입니다.

반환값
ByteArray — 해당 Rectangle의 픽셀을 나타내는 ByteArray입니다.

오류
TypeError — rect가 null입니다.
getPixels () 메서드  
public function getPixels(rect:Rectangle):ByteArray
언어 버전: ActionScript 3.0
런타임 버전: AIR 1.0, Flash Player 9

픽셀 데이터의 사각형 영역에서 바이트 배열을 생성합니다. 픽셀별로 부호 없는 정수(곱하지 않은 32비트 픽셀 값)를 바이트 배열에 씁니다.

매개 변수

rect:Rectangle — 현재 BitmapData 객체의 사각형 영역입니다.

반환값
ByteArray — 해당 Rectangle의 픽셀을 나타내는 ByteArray입니다.

오류
TypeError — rect가 null입니다.

 

테스트 함수 만들고 포토샵에서 나오는 컬러 코드와 비교 해봤을때.

 

x : 530 y: 376
선택한 곳의 색상값 : 584b42

 

이렇게 출력된 좌표의 색상값을 포토샵에서 찍어보면 594b42 로 나온다.

 

몇군데 좌표를 테스트 해봤지만 포토샵과 똑같이 나오지는 않는것 같다.

하지만 사람눈으로 구별할수 있을만큼의 차이는 나지 않는다.