.drawImage( img,x,y,width,height )
- .drawImage( img, x, y, width, height )
- 인자 : img
- 설명 : image 객체
- 인자 : x
- 설명 : 이미지 객체가 그려질 x좌표
- 인자 : y
- 설명 : 이미지 객체가 그려질 y좌표
- 인자 : width
- 설명 : 이미지가 그려지는 크기를 지정합니다. 생략 가능합니다.
- 인자 : height
- 설명 : 이미지가 그려지는 높이이를 지정합니다. 생략 가능합니다.
기본적으로 이미지의 넓이와 높이는 생략 가능하며 기본값은 이미지의 기본 넓이와 높이가 됩니다.
canvas의 재미있는 특징 중 하나는 이미지를 사용할 수 있는 것입니다. 이것을 이용하면 동적으로 사진을 합성하거나 그림에 배경을 넣는 등의 작업을 할 수 있습니다. 외부 이미지들은 Gecko가 지원하는 어떤 형식이라도 사용할 수 있습니다. (예. PNG, GIF, JPEG 형식) 같은 페이지에 있는 다른 canvas 요소들을 소스로 사용할 수도 있습니다.
canvas에서 이미지를 사용할 경우 기본적으로 두단계를 거칩니다.
1. HTMLImageElement 객체를 생성합니다. 이미지의 소스로는 URL/path를 사용하거나 다른 canvas 요소의 소스를 이용할 수도 있습니다. 2. canvas에서 이미지가 사용가능상태(onload)가 되었을경우 사용자 함수를 실행 합니다. |
기본적으로 javascript의 img요소를 다루는 법과 동일합니다. 다른것이 있다면 canvas에서 img의 소스가 사용가능이 되었을경우 사용자 함수가 실행되고 그 후에 canvas에 그려진다는 것입니다.
이미지의 소스의경우 아래의 경우처럼 Base64로 인코딩된 문자로도 사용이 가능합니다.
1 2 3 4 5 6 | var img = new Image(); // Create new img element img.addEventListener( "load" , function () { // execute drawImage statements here }, false ); img.src = 'myImage.png' ; // Set source path img.src = 'https://t1.daumcdn.net/cfile/tistory/267BF23456E8FAD913"js plain" style="border-radius: 0px !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: auto !important; color: black !important; background: none !important;">; //Base64 String |
또한 다른 canvas요소의 video 요소를 가져다 사용할 수도 있습니다.
1 2 3 4 5 6 7 8 | function getMyVideo() { var canvas = document.getElementById( 'canvas' ); if (canvas.getContext) { var ctx = canvas.getContext( '2d' ); return document.getElementById( 'myvideo' ); } } |
아래는 간단한 그래프를 만드는 예제입니다.
먼저 img 객체를 생성후 이미지가 로드되었을때 canvas에 drawImage( img, x, y )로 이미지를 그립니다. img는 이미지 소스이며 x, y는 이미지가 들어갈 좌표입니다. 이미지를 그린 후 간단한 그래프 라인을 그립니다.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function draw() { var ctx = document.getElementById( 'canvas' ).getContext( '2d' ); var img = new Image(); img.onload = function (){ ctx.drawImage(img,0,0); ctx.beginPath(); ctx.moveTo(30,96); ctx.lineTo(70,66); ctx.lineTo(103,76); ctx.lineTo(170,15); ctx.stroke(); }; } |
Demo
아래의 소스는 이미지를 작게하여 타일처럼 사용하는 예제 입니다. 사용된 이미지는 canvas보다 조금 더 큰 이미지를 사용하였습니다.
Source
1 2 3 4 5 6 7 8 9 10 11 12 | function draw() { var ctx = document.getElementById( 'canvas' ).getContext( '2d' ); var img = new Image(); img.onload = function (){ for ( var i=0;i<4;i++){ for ( var j=0;j<3;j++){ ctx.drawImage(img,j*50,i*38,50,38); } } }; } |
Demo
'Develop > canvas' 카테고리의 다른 글
23. save() - 현재 스타일저장 (0) | 2015.08.10 |
---|---|
22. Slicing - 이미지 자르기(크롭) (0) | 2015.08.10 |
20. nonzero - 필터규칙 (0) | 2015.08.10 |
19. shadow - 그림자 (0) | 2015.08.10 |
18. createPattern - 패턴만들기 (0) | 2015.08.10 |