- html5/VA
- html5/canvas
- html5/drag-and-drop
- html5/form
- html5/geolocation
- html5/offline-web-application
- html5/others-api
- html5/outline
- html5/overview
- html5/richtext-edit
- html5/video&audio
- html5/web-storage
- html5/web-workers
- html5/webSqlDatabase
- html5/websocket
- html5/๋ฌธ์ ์
Contents
- 1. ์บ๋ฒ์ค?
- 2. ์ฌ์ฉ ๋ฐฉ๋ฒ
- 2.1. ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ
- 2.2. ์ด๋ฏธ์ง ์ฝ์
- 2.3. ๋ณต์กํ ์ ์ด๋ ๋ํ ๊ทธ๋ฆฌ๊ธฐ
- 2.4. ์คํ์ผ ์ง์
- 2.5. ๊ทธ๋ฆผ์ ํจ๊ณผ
- 2.6. ์์ญ์ด ๊ฒน์น ๋์ ๋์
- 2.7. ํ ์คํธ ์ฝ์
- 2.8. ๊ทธ๋ํฝ ๋ณํ
- 2.9. ๊ทธ๋ฆฌ๊ธฐ ์ปจํ ์คํธ ์ํ ์ ์ฅ๊ณผ ๋ณต์
- 2.10. ํฝ์ ๋ก ๊ทธ๋ฆฌ๊ธฐ
- 2.11. ์ด๋ฏธ์ง๋ฅผ URL๋ก ์ป๊ธฐ
- 2.12. ์ ๋๋ฉ์ด์
- 3. ์์
- 4. ์ฐธ๊ณ ์๋ฃ
1. ์บ๋ฒ์ค? ¶
- ๊ทธ๋ํฝ์ ์์ ๋กญ๊ฒ ๊ทธ๋ฆด ์ ์๋ ์์ญ.
- ๊ณ ์ ๋ ๋์ด์ ๋์ด.
- IE๋ฅผ ์ ์ธํ ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ (?)์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ. IE์์ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด Explorer Canvas, uuCanfas.js ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ์ ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
2. ์ฌ์ฉ ๋ฐฉ๋ฒ ¶
<canvas></canvas>
- canvas์์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ค๋ฉด Javascript๋ก ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ๋ฅผ ์์ฑํด์ผํ๋ค.
var canvas = document.getElementById(๊ฐ์ ธ์ค๊ณ ์ถ์ canvas์ id); var context = canvax.getContext("2d");
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ๋ ๊ทธ๋ํฝ์ ๊ทธ๋ฆฌ๋ ๋ฐ ๋์์ด ๋๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
2.1. ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ ¶
- ์ค๊ณฝ์ด ์๋ ์ฌ๊ฐํ์ ๊ทธ๋ฆด ์ ์๋ค.
- ์์ผ๋ก ์ฑ์ด ์ฌ๊ฐํ์ ๊ทธ๋ฆด ์ ์๋ค.
- ์ฌ๊ฐํ์ ์ง์ธ ์ ์๋ค.
2.2. ์ด๋ฏธ์ง ์ฝ์ ¶
- img ์์, video ์์, canvas ์์์ DOM ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฆด ์ ์๋ค.
- img ์์์ DOM ๊ฐ์ฒด๋ Image ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค ์๋ ์๋ค.
- video ์์์ DOM ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ drawImage()๋ฅผ ํธ์ถํ ์์ ์์ ์ฌ์๋๋ ํ๋ ์์ ๊ทธ๋ ค์ค๋ค.
- img ์์์ DOM ๊ฐ์ฒด๋ Image ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค ์๋ ์๋ค.
- ์ด๋ฏธ์ง๋ฅผ ์๋ ํฌ๊ธฐ๋ก ์ฝ์
ํ ์ ์๋ค.
- ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๋ฅผ ์ง์ ํ์ฌ ์ฝ์
ํ ์ ์๋ค.
- ์๋ ์ด๋ฏธ์ง์์ ์ผ๋ถ๋ถ์ ์๋ผ๋ด์ด ์ฝ์
ํ ์ ์๋ค.
- (๊ทธ๋ฆผ ์ฝ์
)
2.3. ๋ณต์กํ ์ ์ด๋ ๋ํ ๊ทธ๋ฆฌ๊ธฐ ¶
- ํจ์ค
- ์บ๋ฒ์ค์ API๋ฅผ ์ด์ฉํ์ฌ ๊ทธ๋ ค์ง ์ ๋ค์ ์งํฉ.
- ์๋ธ ํจ์ค
- ํจ์ค๋ฅผ ๊ตฌ์ฑํ๋ ํ๋ํ๋์ ์ .
- (๊ทธ๋ฆผ ์ฝ์
)
- ํจ์ค๋ฅผ ๊ตฌ์ฑํ๋ ํ๋ํ๋์ ์ .
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ๊ฐ ์ ๊ณตํ๋ API๋ฅผ ์ด์ฉํ์ฌ ์ง์ , ๋ฒ ์ง์ ๊ณก์ , ์ํธ ๋ฑ ๋ค์ํ ํจ์ค๋ฅผ ๊ทธ๋ฆด ์ ์๋ค.
- ์บ๋ฒ์ค์ API๋ฅผ ์ด์ฉํ์ฌ ๊ทธ๋ ค์ง ์ ๋ค์ ์งํฉ.
- ํจ์ค๋ฅผ ๊ทธ๋ ค ๊ทธ๋ํฝ์ ํ์ํ๋ ์์
- beginPath()๋ก ๊ทธ๋ฆฌ๊ธฐ ์์.
- ๊ทธ ์ด์ ์ ๊ทธ๋ ธ๋ ํจ์ค๋ ๋ชจ๋ ๋ฆฌ์
๋๋ค.
- ๊ทธ ์ด์ ์ ๊ทธ๋ ธ๋ ํจ์ค๋ ๋ชจ๋ ๋ฆฌ์
๋๋ค.
- ์บ๋ฒ์ค์ API๋ฅผ ์ด์ฉํ์ฌ ํจ์ค ๊ทธ๋ฆฌ๊ธฐ.
- ์ฌ๊ธฐ์ ๊ทธ๋ฆฐ ํจ์ค๋ ์์ง ๊ทธ๋ํฝ์ผ๋ก ํ์๋์ง ์์.
- ์ฌ๊ธฐ์ ๊ทธ๋ฆฐ ํจ์ค๋ ์์ง ๊ทธ๋ํฝ์ผ๋ก ํ์๋์ง ์์.
- ๊ทธ๋ํฝ์ ํ๋ฉด์ ํ์.
- stroke()
- ํจ์ค๋ฅผ ์ ์ผ๋ก ํํํ๋ค.
- ์ ์ ์คํ์ผ์ strokeStyle ์์ฑ์ผ๋ก ์ง์ ํ๋ค.
- ํจ์ค๋ฅผ ์ ์ผ๋ก ํํํ๋ค.
- fill()
- ํจ์ค ๋ด๋ถ๋ฅผ ์ฑ์ด๋ค.
- ํธ์ถ์ ํจ์ค๊ฐ ๋ซํ์ง ์์๋๋ผ๋ ์๋์ผ๋ก ๋ซํ ์ํ๋ก ๋ง๋ ๋ค.
- ๋ด๋ถ ์คํ์ผ์ fillStyle ์์ฑ์ผ๋ก ์ง์ ํ๋ค.
- ํจ์ค ๋ด๋ถ๋ฅผ ์ฑ์ด๋ค.
- clip()
- ํจ์ค์ ๋ด๋ถ๋ฅผ ํด๋ฆฌํ ์์ญ์ผ๋ก ์ง์ ํ๋ค.
- ํด๋ฆฌํ ์์ญ์ด ์๋ ์ํ์์ ์บ๋ฒ์ค์ ๊ทธ๋ ค์ง๋ ๊ทธ๋ํฝ์ ํด๋ฆฌํ ์์ญ ์์ชฝ์๋ง ํ์๋๋ค.
- beginPath()๋ฅผ ํธ์ถํ์ฌ ํด๋ฆฌํ ์์ญ์ ํด์ ํ ์ ์๋ค.
- (๊ทธ๋ฆผ ์ฝ์
)
- ํจ์ค์ ๋ด๋ถ๋ฅผ ํด๋ฆฌํ ์์ญ์ผ๋ก ์ง์ ํ๋ค.
- stroke()
- beginPath()๋ก ๊ทธ๋ฆฌ๊ธฐ ์์.
2.4. ์คํ์ผ ์ง์ ¶
- strokeStyle
- stroke(), strokeRect() ๋ฑ์ ์ด์ฉํ์ฌ ๊ทธ๋ฆฐ ์ ์ ์์ด๋ ์คํ์ผ์ ์ง์ ํ๋ค.
- stroke(), strokeRect() ๋ฑ์ ์ด์ฉํ์ฌ ๊ทธ๋ฆฐ ์ ์ ์์ด๋ ์คํ์ผ์ ์ง์ ํ๋ค.
- fillStyle
- fill(), fillRect() ๋ฑ์ ์ด์ฉํ์ฌ ๊ทธ๋ฆฐ ์ ์ ์์ด๋ ์คํ์ผ์ ์ง์ ํ๋ค.
- fill(), fillRect() ๋ฑ์ ์ด์ฉํ์ฌ ๊ทธ๋ฆฐ ์ ์ ์์ด๋ ์คํ์ผ์ ์ง์ ํ๋ค.
- ์์ฑ์ ์ง์ ํ ์ ์๋ ๊ฐ
- CSS Color
- CSS3์ ์ ์ง์ ๋ฐฉ๋ฒ์ ์ ๋ถ ์ด์ฉํ ์ ์๋ค.
- ์๋ฌด ๊ฒ๋ ์ง์ ํ์ง ์์ผ๋ฉด #000000(๊ฒ์์)์ด ๊ธฐ๋ณธ ๊ฐ์ด ๋๋ค.
- CSS3์ ์ ์ง์ ๋ฐฉ๋ฒ์ ์ ๋ถ ์ด์ฉํ ์ ์๋ค.
- CanvasGradient
- ์ ํ ๊ทธ๋ผ๋ฐ์ด์
, ์ํ ๊ทธ๋ผ๋ฐ์ด์
์ ์ ์ฉํ ์ ์๋ค.
- ์ ํ ๊ทธ๋ผ๋ฐ์ด์
, ์ํ ๊ทธ๋ผ๋ฐ์ด์
์ ์ ์ฉํ ์ ์๋ค.
- CanvasPattern
- img ์์๋ video ์์ ํน์ ๋ค๋ฅธ ์บ๋ฒ์ค๋ฅผ ์ฌ์ฉํ์ฌ ํจํด์ ์ง์ ํ ์ ์๋ค.
- img ์์๋ video ์์ ํน์ ๋ค๋ฅธ ์บ๋ฒ์ค๋ฅผ ์ฌ์ฉํ์ฌ ํจํด์ ์ง์ ํ ์ ์๋ค.
- CSS Color
- globalAlpha
- globalAlpha ์์ฑ์ ์ด์ฉํ์ฌ ํฌ๋ช
๋๋ฅผ ์ง์ ํ ์ ์๋ค.
- ์์ฑ ๊ฐ์ 0.0(์์ ํฌ๋ช
)๋ถํฐ 1.0(๋ถํฌ๋ช
)๊น์ง์ ๊ฐ์ ์ง์ ํ ์ ์๋ค.
- globalAlpha ์์ฑ์ ์ด์ฉํ์ฌ ํฌ๋ช
๋๋ฅผ ์ง์ ํ ์ ์๋ค.
2.4.1. ์ ์คํ์ผ ์ง์ ¶
- ์ ์คํ์ผ
- ์ ์ ๊ตต๊ธฐ
- ์ ์ ๋์
- (๊ทธ๋ฆผ ์ฝ์
)
- (๊ทธ๋ฆผ ์ฝ์
)
- ์ ๋ค์ด ๊ต์ฐจํ์๋ ์๊ธฐ๋ ๊ฐ
- (๊ทธ๋ฆผ ์ฝ์
)
- (๊ทธ๋ฆผ ์ฝ์
)
- ์ ์ ๊ตต๊ธฐ
2.5. ๊ทธ๋ฆผ์ ํจ๊ณผ ¶
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ๊ฐ ๊ฐ์ง ์์ฑ์ ์ง์ ํ์ฌ ์ ์ด๋ ๋ํ์ ๊ฐ๋จํ๊ฒ ๊ทธ๋ฆผ์ ํจ๊ณผ๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
2.6. ์์ญ์ด ๊ฒน์น ๋์ ๋์ ¶
- globalCompositeOperation
- ์๋ก์ด ๋ํ์ด ๊ธฐ์กด ์ด๋ฏธ์ง์ ๊ฒน์น ๋์ ํ๋์ ์ง์ ํ๋ ์์ฑ์ด๋ค.
- ๊ธฐ๋ณธ ๊ฐ์ source-over ์ด๋ค.
- (๊ทธ๋ฆผ ์ฝ์
)
- ์๋ก์ด ๋ํ์ด ๊ธฐ์กด ์ด๋ฏธ์ง์ ๊ฒน์น ๋์ ํ๋์ ์ง์ ํ๋ ์์ฑ์ด๋ค.
2.7. ํ ์คํธ ์ฝ์ ¶
- ๊ธ๊ผด, ํฌ๊ธฐ, ๊ฐ๋ก ๋ฐฉํฅ ์ ๋ ฌ ์์น, ์ธ๋ก ๋ฐฉํฅ ์ ๋ ฌ์์น๋ฅผ ์ง์ ํ์ฌ ํ
์คํธ๋ฅผ ์ฝ์
ํ ์ ์๋ค.
- (๋งํฌ)
2.8. ๊ทธ๋ํฝ ๋ณํ ¶
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ์ ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์ขํ๋ฅผ
- ํ๋, ์ถ์
- ํ์
- ์ด๋
ํ ์ ์๋ค.
- ์ขํ ๋ณํ ๋งคํธ๋ฆญ์ค
- ํ๋, ์ถ์
2.9. ๊ทธ๋ฆฌ๊ธฐ ์ปจํ ์คํธ ์ํ ์ ์ฅ๊ณผ ๋ณต์ ¶
- save()
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ์ ์ํ๋ฅผ ์ ์ฅํ๋ค.
- ํ์ฌ ์บ๋ฒ์ค์ ๊ทธ๋ ค์ง ๊ทธ๋ํฝ์ด๋ ํจ์ค๋ ์ ์ฅํ์ง ์๋๋ค.
- ์ ์ฅํ๋ ์ํ ๋ฐ ์์ฑ
- ์ขํ ๋ณํ ๋งคํธ๋ฆญ์ค
- ํด๋ฆฌํ ์์ญ
- strokeStyle
- fillStyle
- globalAlpha
- lineWidth
- lineCap
- lineJoin
- miterLimit
- shadowOffsetX
- shadowOffsetY
- shadowBlur
- shadowColor
- globalCompositeOperation
- font
- textAlign
- textBaseline
- ์ขํ ๋ณํ ๋งคํธ๋ฆญ์ค
- restore()
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ์ ์ํ๋ฅผ ๋ณต์ํ๋ค.
- save()๋ก ์ ์ฅํ ์ํ๋ ์คํ์ ์์ด๊ณ restore()๋ฅผ ํธ์ถํ ๋๋ง๋ค ์คํ์ ํ์์๋ถํฐ ์ํ๋ฅผ ๋ถ๋ฌ์จ๋ค.
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ์ ์ํ๋ฅผ ๋ณต์ํ๋ค.
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ์ ์ํ๋ฅผ ์ ์ฅํ๋ค.
2.10. ํฝ์ ๋ก ๊ทธ๋ฆฌ๊ธฐ ¶
- ImageDataํ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์บ๋ฒ์ค ์์ ๋นํธ๋งต ์ด๋ฏธ์ง๋ฅผ ํฝ์
๋จ์๋ก ์กฐ์ํ ์ ์๋ค.
- ImageData์ ์์ฑ
- width
- height
- data
- ํฝ์
๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ์ซ์(0~255)๋ก ์ด๋ฃจ์ด์ง 1์ฐจ์ ๋ฐฐ์ด.
- ๋ฐฐ์ด์ 4๊ฐ์ ๊ฐ์ด ํ๋ฌถ์์ผ๋ก 1ํฝ์
์ด ๊ฐ์ง ์ ๋ณด(R, G, B, Alpha)๋ฅผ ๋ํ๋ธ๋ค.
- ํฝ์
๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ์ซ์(0~255)๋ก ์ด๋ฃจ์ด์ง 1์ฐจ์ ๋ฐฐ์ด.
- width
2.11. ์ด๋ฏธ์ง๋ฅผ URL๋ก ์ป๊ธฐ ¶
- ์บ๋ฒ์ค๊ฐ ๊ฐ์ง toDataURL()์ ํธ์ถํ์ฌ ์บ๋ฒ์ค ๋ด์ฉ์ URL๋ก ์ป์ด์ฌ ์ ์๋ค.
- toDataURL(type)
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ๊ฐ ์๋๊ณ ์บ๋ฒ์ค๊ฐ ๊ฐ์ง ๋ฉ์๋์ด๋ค.
- type
- ์ด๋ฏธ์ง์ ์ธ์ฝ๋ฉ ๋ฐฉ๋ฒ์ MIME ํ์
์ผ๋ก ์ง์ ํ๋ค.
- ๊ธฐ๋ณธ๊ฐ์ 'image/png'์ด๋ค.
- 'image/jpeg'์ง์ ์ ๋๋ฒ์งธ ์ธ์๋ก ์ซ์(0.0~1.0)๋ฅผ ๋ฃ์ด ์ด๋ฏธ์ง์ ํ์ง์ ์ง์ ํ ์ ์๋ค.
- ์ด๋ฏธ์ง์ ์ธ์ฝ๋ฉ ๋ฐฉ๋ฒ์ MIME ํ์
์ผ๋ก ์ง์ ํ๋ค.
- ๊ทธ๋ฆฌ๊ธฐ ์ปจํ
์คํธ๊ฐ ์๋๊ณ ์บ๋ฒ์ค๊ฐ ๊ฐ์ง ๋ฉ์๋์ด๋ค.
2.12. ์ ๋๋ฉ์ด์ ¶
- ์ผ์ ๊ฐ๊ฒฉ์ผ๋ก ์บ๋ฒ์ค ์ ์ฒด๋ฅผ ๋ค์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ๋๋ฉ์ด์
์ ๊ตฌํํ ์ ์๋ค.
4. ์ฐธ๊ณ ์๋ฃ ¶
- http://dev.w3.org/html5/canvas-api/canvas-2d-api.html
- https://developer.mozilla.org/en/Canvas_tutorial
- canvas๋ก ๊ตฌํ๋ ๊ทธ๋ฆผํ
- ์ฉ๋ค. ์์์์ค. - ๊น์๊ฒฝ
- ์ฉ๋ค. ์์์์ค. - ๊น์๊ฒฝ
- HTML5 canvas cheat sheet
- canvas์ ๊ดํ ์์ฃผ ์์ธํ ์ค๋ช
์ด๋ป๊ฒ ๊ทธ๋ ค์ง๋์ง์ ๋ํด์๋ ์ด๊ณณ์์ ๋ฌผ์ด๋ณด๋ฉด ๋๋ถ๋ถ ํด๊ฒฐ ๋ ๋ฏ
- framerate ์ธก์ ์ฝ๋