[개발]프로그래밍/html5
[html5] drawImage - canvas에 이미지 그리기
좋은 블로그
2021. 3. 4. 10:36
1. 개념
drawImage - canvas에서 이미지 그리기
drawImage는 캔버스에서 이미지를 그려줌
이미지를 그려주기 위해 먼저 new Image 로 객체를 생성한 뒤 onload로 이미지를 로딩한 후에 캔버스에서 이미지를 그릴 수 있음
이미지를 그려주기 위해 먼저 new Image 로 객체를 생성한 뒤 onload로 이미지를 로딩한 후에 캔버스에서 이미지를 그릴 수 있음
drawImage(image ,canvas_x, canvas_y)
- image : 이미지 객체
- canvas_x : 캔버스의 x 좌표
- canvas_y : 캔버스의 y 좌표
- canvas_x : 캔버스의 x 좌표
- canvas_y : 캔버스의 y 좌표
drawImage(image ,canvas_x, canvas_y,canvas_width,canvas_height)
- image : 이미지 객체
- canvas_x : 캔버스의 x 좌표
- canvas_y : 캔버스의 y 좌표
- canvas_width : 캔버스 위에 그려질 이미지의 넓이
- canvas_height : 캔버스 위에 그려질 이미지의 높이
- canvas_x : 캔버스의 x 좌표
- canvas_y : 캔버스의 y 좌표
- canvas_width : 캔버스 위에 그려질 이미지의 넓이
- canvas_height : 캔버스 위에 그려질 이미지의 높이
drawImage(img ,ix,iy,iw,ih,cx, cy,cw,ch)
- img : 이미지 객체
- ix : 이미지 내에 있는 x 좌표
- iy : 이미지 내에 있는 y 좌표
- iw : 이미지 내에 있는 (x,y)를 중심으로 그려질 넓이
- ih: 이미지 내에 있는 (x,y)를 중심으로 그려질 높이
- cx : 캔버스의 x 좌표
- cy : 캔버스의 y 좌표
- cw : 캔버스 위에 그려질 이미지의 넓이
- ch : 캔버스 위에 그려질 이미지의 높이
- ix : 이미지 내에 있는 x 좌표
- iy : 이미지 내에 있는 y 좌표
- iw : 이미지 내에 있는 (x,y)를 중심으로 그려질 넓이
- ih: 이미지 내에 있는 (x,y)를 중심으로 그려질 높이
- cx : 캔버스의 x 좌표
- cy : 캔버스의 y 좌표
- cw : 캔버스 위에 그려질 이미지의 넓이
- ch : 캔버스 위에 그려질 이미지의 높이
2. 태그
drawImage
html5 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<!
DOCTYPE
html>
<html lang
=
"kr"
>
<head>
<meta charset
=
"utf-8"
>
<title>
키보드와 하루
</title>
</head>
<body>
<canvas id
=
"tcanvas"
width
=
"300"
height
=
"200"
style
='
border
:
1px solid #000
';
>
</canvas>
<canvas id
=
"tcanvas_ two"
width
=
"300"
height
=
"200"
style
='
border
:
1px solid #000
';
>
</canvas>
<script>
var
canvas
= document.
getElementById
(
"tcanvas"
);
var
context
= canvas.
getContext
(
"2d"
);
1
var
img = new
Image
();
//이미지 객체 생성
img.
src
=
"code.jpg"
;
//code.jpg라는 이미지 파일을 로딩 시작
img.
onload
=
function
()
//이미지 로딩 완료시 실행되는 함수
{
//(20,20)을 중심으로 100*100의 사이즈로 이미지를 그림
context.
drawImage
(img,20,20,100,100)
}
var
canvas_two
= document.
getElementById
(
"tcanvas_two"
);
var
context_two
= canvas_two.
getContext
(
"2d"
);
2
var
img_two = new
Image
();
//이미지 객체 생성
img_two.
src
=
"code.jpg"
;
//code.jpg라는 이미지 파일을 로딩 시작
img_two.
onload
=
function
()
//이미지 로딩 완료시 실행되는 함수
{
//이미지 비트맵에서 (30,30)을 중심으로 100*100 크기의 영역을
캔버스에 전체에 그림
context.
drawImage
(img_two,30,30,100,100,0,0
,canvas_two.width,canvas_two.height)
}
</script>
</body>
</html>
|
결과 화면
코드 설명
1
context.
drawImage
(img,20,20,100,100);
이미지를 캔버스에 그리기 위해서는 사전 작업이 필요합니다
먼저는 new Image 로 이미지 객체를 생성하게 됩니다.
그리고 이 후에 src로 이미지 파일을 로딩 시켜서 onload라는 메소드를 통해 이미지를 다 로딩을 하게 되면 그 이후에 실행할 내용을 정해줍니다.
이 실행 할 곳에 drawImage라는 메소드를 통해서 이미지를 캔버스 위에 그릴 수 있습니다.
먼저는 new Image 로 이미지 객체를 생성하게 됩니다.
그리고 이 후에 src로 이미지 파일을 로딩 시켜서 onload라는 메소드를 통해 이미지를 다 로딩을 하게 되면 그 이후에 실행할 내용을 정해줍니다.
이 실행 할 곳에 drawImage라는 메소드를 통해서 이미지를 캔버스 위에 그릴 수 있습니다.
2
context.
drawImage
(img_two,30,30,100,100,0,0,two.width,two.height);
Imge 객체를 사용하면 이미지에서 특정 부분만을 지정하여 가져와서 그릴 수 있습니다.
위에서와 같이 이미지에서 30,30의 좌표에서 100*100 사이즈에 해당하는 이미지를 가져왔습니다.
그리고 이 이미지를 캔버스 넓이 * 캔버스 높이 크기인 전체 크기에 표시하도록 하였습니다.
이와 같이 이미지에서 자신이 원하는 일정 부분만을 가져와서 표시가 가능한 것을 확인할 수 있습니다.
위에서와 같이 이미지에서 30,30의 좌표에서 100*100 사이즈에 해당하는 이미지를 가져왔습니다.
그리고 이 이미지를 캔버스 넓이 * 캔버스 높이 크기인 전체 크기에 표시하도록 하였습니다.
이와 같이 이미지에서 자신이 원하는 일정 부분만을 가져와서 표시가 가능한 것을 확인할 수 있습니다.