์๋ , ์๋ค์!
์์
์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. h2c๋ ๋ฉ์ง ๋๊ตฌ์
๋๋ค!
ํ์ด์ง์ ํ๋์ ์์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. http://king.fi/site/ - ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง
body { ... background: #070707 url(../img/bg.jpg) ๋ฐ๋ณต ์์ 50% 0;
๋ ๋๋งํ์ง ์์ต๋๋ค. h2c์ ๊ฐ๋จํ ํธ์ถ:
html2canvas($('body'), {
allowTaint: false,
logging:true,
onrendered: function (canvas) {
document.body.appendChild(canvas);
}
});
ํ ์คํธ ์ฝ์ http://html2canvas.hertzen.com/screenshots.html ์์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค.
์๋์:
๋ ๋๋ง:
HTML2์บ๋ฒ์ค: 0.4.0
๋งฅOS 10.6 ํฌ๋กฌ 29.0.1547.62
๊ฐ์ฌ ํด์!
0.4.1๋ก ์์ ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค(๊ฐ๋ฐ ๋ถ๊ธฐ์์). ์๋ง๋ #256๊ณผ ๊ด๋ จ์ด ์์ ๊ฒ์ ๋๋ค.
0.4.1๋ก ์๋ํ๊ณ ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์กด์ฌํ๋์ง ํ์ธํ ์ ์์ต๋๊น?
์๋ ํ์ธ์. ๋๋ ์ ํํ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์, ๋ฌธ์ ๋ 0.4.1์ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค. ๋ชจ๋ ๋์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค... ์์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋์? ์ด ๋๋ผ์ด ์คํฌ๋ฆฝํธ์ ๋ํด Niklas์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ด ์ฝ๋๋ ๋ ๋๋ง๋์ง ์์ต๋๋ค.
div class="mc-image " title="" style="background- image:url ('http://eterni-t.design.s3.amazonaws.com/381/theme-154-original-1.jpg' ), ๋๋น: 1025ํฝ์
, ๋์ด: 780ํฝ์
, Z-์์ธ: 9999"
background-size: cover๋ฅผ ์ ๊ฑฐํ๋ฉด ์์์ฐจ๋ ธ์ต๋๋ค. ๋ด class="mc-image"์์ ์๋ํฉ๋๋ค.
@ymorin007 Mac๊ณผ Chrome/Opera/Safari๋ฅผ ์ฌ์ฉ ์ค์ด๊ฑฐ๋ ์ต์ ์ปค๋ฐ์ ์ฌ์ฉ ์ค์ ๋๊น(์: ์ง์ ์คํฌ๋ฆฝํธ ์์ฑ)?
Windows7 ํฌ๋กฌ ๋ฒ์ 30.0.1599.101m
์์ ์์ :
์ค 2818์ ๋ค์์ผ๋ก ๋ณ๊ฒฝ
ctx.fillStyle = (options.background !== undefined) ? options.background : parsedData.backgroundColor;
์ด๋ ๋ฐฐ๊ฒฝ ํฌ๊ธฐ์ ๋ ๊ฐ์ง ์ต์ ์ธ ํฌํจ ๋๋ ๋ฎ๊ฐ์ ํ์คํ ๊ด๋ จ์ด ์์ต๋๋ค.
์ต์ ์ปค๋ฐ(html2canvas 0.4.1)์ด ์์ ๋์์ต๋๋ค.
๋ด ๊ฒ์ ์ต์ ์ปค๋ฐ ํ์๋ ์ฌ์ ํ ์ด๊ฒ์ํ๊ณ ์์ต๋๋ค ...
๋ด ๋ฐฐ๊ฒฝ ํฌ๊ธฐ๋ '์ปค๋ฒ'๋ก ์ค์ ๋์ด ์๊ณ '์๋ 100%'๋ ์๋ํ์ง๋ง ์ฌ์ ํ ํฐ์/ํฌ๋ช ํฉ๋๋ค.
background-size๋ฅผ ์ ๊ฑฐํ๋ฉด ์ ์บก์ฒ๋ฉ๋๋ค... ๋ ๋ง์ ํ์ด ์์ต๋๊น?
์์ ์์ , ์ฌ์ฉ:
b ๋ฐฐ๊ฒฝ :URL ("...base64...")
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉํ์ง ๋ง์ธ์
๋ํ html2canvas๊ฐ ์ด๋ฅผ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ "์คํ๋ผ์ดํธ"๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
url์ ์์ ๋๋ ํ ๋ฆฌ ๋ฐฐ๊ฒฝ์ ๋ํ ์๋ ๊ฒฝ๋ก๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ backgound ์ด๋ฏธ์ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. url("../i/alerts-16x.png")
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก png๋ฅผ ์ฌ๋ฐฐ์นํ๋ฉด ์๋ํฉ๋๋ค. url("i/alerts-16x.png")
๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋งํ ์ ์๊ณ ๋ฐฐ๊ฒฝ ํฌ๊ธฐ๋ฅผ ํฌํจํ๊ฑฐ๋ ํฌํจํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก 0.4.1 ๋ฒ์ ์์ 350ํ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ต๋๋ค.
topPos = isNaN(parseInt(bgposition[1], 10)) ? topPos : parseInt(bgposition[1], 10);
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์๋ํฉ๋๋ค!
๋ฒ์ 0.4.1์ ์ฌ์ฉ ์ค์ ๋๋ค.
๋ฐฐ๊ฒฝ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
fperich๊ฐ ์ ์ํ๋๋ก ๋ผ์ด๋ธ 350์ ๋ณ๊ฒฝํ์ง๋ง ๋์์ด๋์ง ์์์ต๋๋ค.
๋ํ hernan์ด ๊ถ์ฅํ๋ base64 ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ ๊ธฐ์จ์ด ์์ต๋๋ค.
๋ณํํ๋ ค๋ URL์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
http://prompter.rareapps.org/prompt/prompt-save3.php?p=123
์ฌ๊ธฐ์์ ์น ํ์ด์ง ๋ ๋๋ฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ๊ฒฝ์ผ๋ก ๋ณํ๋ฉ๋๋ค.
http://html2canvas.hertzen.com/screenshots.html
๊ทธ๋ฌ๋ ๋ด ํ์ด์ง์๋ ๋ฐฐ๊ฒฝ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ํ ๋ณด๊ธฐ
http://prompter.rareapps.org/prompt/prompt-save3.php?p=123
๋ด๊ฐ ์ฌ์ฉํ๋ ์ฝ๋๋ ์ด๊ฒ์ ๋๋ค
<script type="text/javascript">
$(window).load(function() {
html2canvas(document.body, {
onrendered: function(canvas) {
window.location.href = canvas.toDataURL('image/jpeg');
},
allowTaint: true,
taintTest: false
});
});
</script>
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ด์ง๋ฅผ ๋ก๋ํ๊ณ ์ด๋ฏธ์ง๋ก ๋ณํํ๋๋ก ํฉ๋๋ค.
๋ด ์ฝ๋์ ๋ฌธ์ ๊ฐ ์์ต๋๊น?
๊ฐ์ฌ ํด์
fperich ์ ๋ก๋งจ !! ๊ฐ์ฌ ํด์
๋ ๋ฒ์งธ๋ก, fperich, ๋น์ ์ ์ง๊ธ ๋ด๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ์ฌ๋์ ๋๋ค!
fperich ๊ฐ์ฌํฉ๋๋ค :D ์ ์๋ํ์ต๋๋ค
@shauchenka @niklasvh ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋์๋ค๊ณ ๋ง์ ํ์๊ฒ ์ต๋๊น? ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ ์/์์ด์ผ ํฉ๋๊น?
0.4.1(์ต์ ๋ฆด๋ฆฌ์ค ๋ฐ ๊ฐ๋ฐ์ ๋ชจ๋)์ ์ฌ์ฉํ๋ฉด ์ต์ํ Windows์ฉ Chrome์์ ๋ด ์์ ์์์ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง(์์์ ์คํ๋ผ์ดํธ์)๊ฐ ์บ๋ฒ์ค์ ํ์๋์ง ์์ต๋๋ค. Windows์ฉ Firefox๋ ์ ์๋ํฉ๋๋ค. Mac์ฉ Chrome์์๋ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๊ฐ ์๋ ๋ฒ์์ ๊ฒ์์ ์ฌ๊ฐํ์ด ํ์๋ฉ๋๋ค. fperich ์์ ์ ์๋ํ์ง๋ง ์๋ํ์ง ์์์ต๋๋ค. ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ ๋์ผํ ์ถ์ฒ์ ์๊ณ ๋ชจ๋ ํ์ผ์ ์๋ฒ์ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์์ต๋๋ค.
@4gstudios ๋ฌธ์ ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด jsfiddle(๋๋ ๊ณต๊ฐ์ ์ผ๋ก ์ก์ธ์คํ ์ ์๋ ๋งํฌ)์ ๊ฐ๋จํ ์์ ๋ฅผ ๋ฃ์ ์ ์์ต๋๊น?
@usmonster ํ์คํฉ๋๋ค. ์ด๋ฏธ์ง๊ฐ ์ธ๋ถ์ ์๋ ๊ฒ์ ์ํ์ง ์์๊ธฐ ๋๋ฌธ์ jsfiddle์ ์ฌ์ฉํ์ง ์์์ผ๋ฏ๋ก ๊ต์ฐจ ์ถ์ฒ ๋ฌธ์ ๋ฅผ ๋ฐฐ์ ํ ์ ์์ต๋๋ค.
์ด์ ๋ฌด์์ ์ถ์ธกํฉ๋๋ค. ์ด๊ฒ์ ์ค๋นํ๋ ๋์ ๋ฌธ์ ๊ฐ ๋ด ์คํ๋ผ์ดํธ์ ์ฌ์ฉํ๋ ค๋ png์ ์๋ ๊ฒ ๊ฐ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ์ฒ์์๋ ํ์ผ ํฌ๊ธฐ๊ฐ ์๋๊น ์๊ฐํ์ง๋ง ์ค์ ๋ก๋ png ํฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ ๋ณต์กํ png๊ฐ ์๋์ ์ผ๋ก ์์ ์ฐจ์์์ ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ png์ ํฌํจ๋ ์ ๋ณด์ ์๊ณผ ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค. ๋๋ tinypng.com์ ํตํด png ์ต์ ํ๋ฅผ ์ฝ๊ฐ ์๋ง์ผ๋ก ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ํ์ผ ํฌ๊ธฐ์ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํ์ง ์์ผ๋ฉฐ ๋ ์์ ํ์ผ ํฌ๊ธฐ์ ๋ ํฐ ์น์ ์ด๋ฏธ์ง์๋ ๋ฌธ์ ๊ฐ ์๋ ๋ฐ๋ฉด ๋ ํฐ ํ์ผ์ ๋ ์์ ์น์ ์ด๋ฏธ์ง์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค ์ฌ์ด์ฆ๋ ์๋ฉ๋๋ค.
๋ด ์๋ฅผ ํ์ธํ์ญ์์ค: http://4gstudios.com/html2canvas/
ํ๋์ ์์๊ฐ ์ ๋ ๋๋ง๋ฉ๋๋ค(bg ์ด๋ฏธ์ง๋ 100x7800ํฝ์
/374kb).
๋นจ๊ฐ์ ์์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋์ง ์์(bg ์ด๋ฏธ์ง๋ 100x25000ํฝ์
/254kb)
-OS X ํฌ๋กฌ(๋ธ๋๋ฐ์ค)
-OS X Safari("์๋์ค" ์์)
-๊ทธ๋ฆฌ๊ณ ์๋ง๋ Win Chrome(์ด์ ๋ฐ์ํ์ง๋ง PC ATM ๊ทผ์ฒ์์๋ ๋ฐ์ํ์ง ์์)
-OS X Firefox๋ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด๊ฐ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ ์ ์ค๋ช ํ๊ณ ํด๊ฒฐํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ด ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ค๋ ์คํ๋ผ์ดํธ์๋ 800๊ฐ์ง๊ฐ ๋๋ ๋ค์ํ CSS ๊ท์น์ด ์์ผ๋ฉฐ ๋ณ๊ฒฝํ๊ณ ์ถ์ง ์์ต๋๋ค!
ํธ์ง : ๋ด ์์ ๋ 0.4.1์ ์ฌ์ฉํ์ง๋ง 0.5.0rc1์ ์๋ํ์ ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
ํ ์คํธํ ์ ์๋ OS X๊ฐ ์์ง๋ง Windows(Vista)์ Chrome 37 ๋ฐ Linux(Debian wheezy)์ Chrome 38 ๋ฒ ํ์์ ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ค ๋ฒ์ ์ Chrome์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ๋ชจ๋ ํ์ฅ ๊ธฐ๋ฅ์ ๋ ์ํ์์ ์ํฌ๋ฆฟ ๋ชจ๋์์ ํ ์คํธ๋ฅผ ์๋ํด ๋ณด์ จ์ต๋๊น?
@usmonster ๋ฐฉ๊ธ Chrome 36(Win7)์์ ์๋ํ ๋ค์ Chrome 37(Win7)๋ก ์ ๋ฐ์ดํธํ๋๋ฐ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@4gstudios ๋ก๊น ์ ์ผ๋ฉด ๋ธ๋ผ์ฐ์ ์ฝ์์์ ๋ฌด์์ ๋ณผ ์ ์์ต๋๊น?
๋ํ ๋์ผํ ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ํ์ฌ ๋ง์คํฐ ๋ธ๋์น์ ์๋ ๊ฒ๋ง ์ฌ์ฉํ๋๋ก ์ฌ์ดํธ์ ์์ ๋ฅผ ์ ๋ฐ์ดํธํ์ญ์์ค. ๋๋ฒ๊น ์ ํฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ ์งธ, ๋ชจ๋ ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋นํ์ฑํ ์์ผ๋ ์ด ๋ฌธ์ ๊ฐ ๋ํ๋๋์ง ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค. (๊ทธ๋ ๋ค๋ฉด ์ด๋ฏธ์ง์ ๋ค์ด๋ก๋ ๋ฐ/๋๋ ๋ ๋๋ง์ด ๋๋ฌด ๋๋ฆฐ ๊ฒ์ฒ๋ผ ํ์ด๋ฐ ๋ฌธ์ ์ธ์ง ๊ถ๊ธํฉ๋๋ค.)
@usmonster
1) ๋ก๊น
์ด ์ผ์ ธ ์์ต๋๋ค....
html2canvas: ์ฌ์ ๋ก๋ ์์: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ์ฐพ๊ธฐ html2canvas.js:21
html2canvas: ์ฌ์ ๋ก๋: ์ด๋ฏธ์ง ์ฐพ๊ธฐ html2canvas.js:21
html2canvas: ๋ฏธ๋ฆฌ ๋ก๋: ์๋ฃ. html2canvas.js:21
html2canvas: ์์: ์ด๋ฏธ์ง: 1 / 2 (์คํจ: 0) html2canvas.js:21
html2canvas: ์์: ์ด๋ฏธ์ง: 2 / 2 (์คํจ: 0) html2canvas.js:21
์ด๋ฏธ์ง ๋ก๋ ์๋ฃ: # 2 (์คํจ: 0) html2canvas.js:21
html2canvas: ๋ ๋๋ฌ: ์บ๋ฒ์ค ๋ ๋๋ฌ ์๋ฃ - ์บ๋ฒ์ค ๋ฐํ obj html2canvas.js:21
2) ๋ง์คํฐ ๋ธ๋์น html2canvas.js๋ก ์ ๋ฐ์ดํธ
3) ๋ค, ๋ชจ๋ ์ฅ์ ์ธ์ผ๋ก ์๋ํ์ต๋๋ค. ํ์ด๋ฐ์ด๋ผ๋ฉด ๋ค์ด๋ก๋ ์๊ธฐ๊ฐ ์๋ ๊ฒ ๊ฐ์ง๋ง ๋ ๋๋ง์ ๊ฐ๋ฅํฉ๋๋ค.
@4gstudios ํ ์คํธํ ๋ค๋ฅธ โโ์ปดํจํฐ๊ฐ ์์ต๋๊น? ๋ํ ๋ผ์ด๋ธ ๋งํฌ๋ ์ฌ์ ํ 0.4.1์ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
@usmonster ์ค, ๋ด ์๋ชป, ๋ด๊ฐ
ํ , ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํจํฐ ์ค ํ๋์์ ์ฌ์ ํ ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์ง๋ง ๋๋ฃ๋ Windows 7 ์ปดํจํฐ์์ ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์ต๋๋ค. @niklasvh , @brcontainer ์์ด๋์ด๊ฐ ์์ต๋๊น? ํ๋ซํผ๋ณ GPU ๊ฐ์ ํฉ์ฑ/๋์คํฐํ์ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์๋ฐ.. ์ด๋ฒ ์ฃผ ํ๋ฐ์ W7 ์ปดํจํฐ์ ์ก์ธ์คํ ์ ์์ผ๋ฉด ํ ์คํธ๋ฅผ ํด๋ด์ผ ๊ฒ ์ง๋ง, ๊ถ๊ธํฉ๋๋ค... @4gstudios , ๋ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ์ ๋ฐ์ผ๋ก ๋ง๋ค๊ณ ๋ค์ ํ ์คํธํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๋ฒ๊ทธ๊ฐ ์ฌ๋ผ์ง ๋๊น์ง ๊ณ์ ์ ๋ฐ์ผ๋ก ์ค์ด๊ณ CSS ๊ท์น์ ์กฐ์ ํ์๊ฒ ์ต๋๊น? ์ด ๋ฌธ์ ๋ฅผ ์ ๋ฐํ๋ PNG์ "ํฅ๋ฏธ๋ก์ด" ์์ญ์ด ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
@usmonster Chrome์ด ์ค์น๋ Windows 7 x64์์ ๋ฐ์ํ์ต๋๋ค. DEBUG๋ฅผ ํ๋ ค๊ณ ํฉ๋๋ค.
windows7x64์์๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ฐ ๋ฒ์ 32์์๋ ๋ฐ์ํ์ง ์๋๋ฐ, ํฌ๋กฌ์ ๋ฒ๊ทธ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ์๋ณธ ์ด๋ฏธ์ง์ ํฌ๊ธฐ์ ๊ด๋ จ์ด ์๋ค๊ณ ํ์ ํฉ๋๋ค. ํฐ ์ด๋ฏธ์ง๋ ํฐ ์บ๋ฒ์ค๋ฅผ ๋ ๋๋งํ๋ ๋ฐ์๋ ๋ค์ํ ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉฐ ๋ด๊ฐ ์๋ ํ ์ด์ ๋ํ ์ง์์ ๊ฐ์งํ๋ ํ๋ช ํ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
์์ค ์ด๋ฏธ์ง์ ํฌ๊ธฐ์ ์ง์ ์ ์ธ ๊ด๋ จ์ ์์ง๋ง ๋ค์ํ ๊ฒฐ๊ณผ๋ฅผ ํตํด ๋ค์๊ณผ ๊ฐ์ ํฐ ์ด๋ฏธ์ง ๋ฐ ์บ๋ฒ์ค ๋ฌธ์ ์ ๋ํ ์์ด๋์ด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋ค๋ฅธ ๋ธ๋ผ์ฐ์ /OS/๋ฉ๋ชจ๋ฆฌ ์ ํ์ ๋ํด ์ต๋ ์ด๋ฏธ์ง ํฌ๊ธฐ์ ์บ๋ฒ์ค ํฌ๊ธฐ์ ๋ํ ๋ช ๊ฐ์ง ํ ์คํธ๋ฅผ ์ค์ ํด์ผ ์ค์ ๋ก ์ ํ์ด ์๋ ์์น์ ์ ํ์ ์ด๋ป๊ฒ๋ ์ฐํํ ์ ์๋์ง ์ฌ๋ถ(์: ๋ ๋๋ง์ ๋ ์์ ์ฒญํฌ๋ก ๋ถํ )๋ฅผ ๋ณด๋ค ํ์คํ๊ฒ ์ดํดํด์ผ ํฉ๋๋ค. .
@4gstudios @brcontainer ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์๋ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ผ๋ง๋ ์์ต๋๊น?
@niklasvh
Windows 32๋นํธ์์ ํ ์คํธ(๊ฐ๋ฅํ ํ) ํ๊ฒ ์ง๋ง ๋ฌธ์ ๋ Windows 64๋นํธ์์๋ง ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด๊ฐ ์์ฌํ๋๋ก ๋ฌธ์ ๋ "Windows x64"์์๋ง ๋ฐ์ํ๋ฉฐ https://github.com/niklasvh/html2canvas/issues/206#issuecomment -17744888, ์ฆ Windows 32๋นํธ์์๋ ์๋ํ๊ณ Windows 64๋นํธ์์๋ ์คํจํฉ๋๋ค. , ํ๋์ ๊ฐ๋ฅํ ๋ฒ๊ทธ Chrome.
@brcontainer ๋ฌธ์ ๋ OS X 10.7์ Chrome ๋ฐ Safari์์๋ ๋ฐ์ํฉ๋๋ค...
๋ํ 32๋นํธ Windows 7 ์ปดํจํฐ์์ ํ ์คํธํ์ผ๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค(๋ฒ๊ทธ ์์). ์ด๊ฒ์ ํ์คํ 64๋นํธ ์์คํ ๋ง์ ๋ฌธ์ ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ข์ ์บ์น, @brcontainer! ์ฃผ๋ชฉํด์ผ ํ ๋ ๋ค๋ฅธ ์ฌํญ์ 64๋นํธ ์์คํ ์ ์ํ Chrome์ ์ ๋ฒ์ ์ด ๋งค์ฐ ์ต๊ทผ์ ์ถ์๋์๋ค๋ ๊ฒ์ ๋๋ค.
http://blog.chromium.org/2014/08/64-bits-of-awesome-64-bit-windows_26.html
https://www.google.com/chrome/browser/?platform=win64(Windows ๋ค์ด๋ก๋ ๋งํฌ)
http://blog.chromium.org/2014/08/mac-chrome-when-im-sixty-four-bits.html(Mac ์ ์์ง ๋ฒ ํ ๋ฒ์ ์)
์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ฌ๋๋ค์ ๊ฒฝ์ฐ ์์ง 32๋นํธ ๋ฒ์ ์ ์คํํ๊ณ ์์ง ์์ต๋๊น? ๋ค์ด๋ก๋ํ๋ ค๋ฉด 64๋นํธ ๋ฒ์ ์ ์๋์ผ๋ก ๋ค์ด๋ก๋ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
@usmonster ๊ธ์ ๋ด Windows7์ 64๋นํธ์ ๋๋ค. ์ด ๋ฒ๊ทธ๋ Win7 64๋นํธ์ 32๋นํธ ๋ฐ 64๋นํธ Chrome ๋ชจ๋์ ์ํฅ์ ์ค๋๋ค. ์ผ๋ถ OSX ์์คํ ์๋ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง๋ ์์ง๋ง 64๋นํธ ๋ฒ์ ์ Chrome์ ์ป์ ์ ์๋ ๋งํฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ด๊ฒ์ "Windows 64bit"(๋๋ Mac OSX)์์ ๋นํธํ์ฑ์ด ์๋๋ผ Chrome์ ๋ฒ๊ทธ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
@brcontainer 64๋นํธ Windows ๋ฐ Mac์์ Chrome ๋ฐ WebKit ๋ธ๋ผ์ฐ์ ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค(Linux๊ฐ ์๋ .. ์ ์ด๋ ๋ด 64๋นํธ Debian ์์ w/ 8GB RAM์์๋ ์๋). @4gstudios ๋ 32๋นํธ Windows์์ ๋ฒ๊ทธ๋ฅผ ๋ณผ ์ ์์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ์ ์ํฅ์ ๋ฐ๋ ์ปดํจํฐ์ ์ผ๋ง๋ ๋ง์ RAM์ด ์์ต๋๊น?
์ด ๋ฌธ์ ๋ฅผ ๊ทผ๋ณธ์ผ๋ก ์ค์ผ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ๋ ๋ฒ์งธ PNG์๋ ์ฒซ ๋ฒ์งธ PNG๋ณด๋ค ๊ทธ๋ผ๋์ธํธ์ ํจ์ฌ ๋ ํฐ ์น์๊ฐ ์์ต๋๋ค. ํ ์คํธํ ์ํฅ์ ๋ฐ๋ ์์คํ ์ด ์๋ ๊ฒฝ์ฐ ํน์ ๋ฌธ์ ์์ญ์ด๋ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ํฌ๊ธฐ๊ฐ ์๋์ง ์ ์ ์์ ๋๊น์ง "๋์" PNG๋ฅผ ์๋ผ๋ ๋๋ค. (์๋ง๋ @niklasvh์๊ฒ๋ ๊ด์ฌ์ด
@instiz @instiz
AppleWebkit(๋ฒ์ 538.1) ๋ฐ "Safari 5.1.7"(๋ฒ์ 534.57.2 - ์ด ๋ธ๋ผ์ฐ์ ๋ ๋ ์ด์ ์
๋ฐ์ดํธ๋ฅผ ๋ฐ์ง ์์)์์ Windows .then
(๋ฐํ/ํธ๋ฆฌ๊ฑฐ ์๋)๊ฐ ์ํ๋์ง ์์ต๋๋ค.
๊ทธ๋์ "Webkit"์ ์คํจ์ธ์ง "Blink"(Chrome์ Webkit ์์ง ํฌํฌ) ์คํจ์ธ์ง, ์๋๋ฉด "RAM" ๋ถ์กฑ์ผ๋ก ์ธํ ์คํจ์ธ์ง ํ ์คํธํ ์ ์์์ต๋๋ค.
@brcontainer @4gstudios ์ ๋ฐ๋ฅด๋ฉด ๋ฒ๊ทธ๋ OS X์ Safari์ Chrome ๋ชจ๋์์ ์ฌํ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ ์ด๋ Blink์ WebKit ์์ง ๋ชจ๋์ ๊ณตํต์ ์ธ ๋ฒ๊ทธ๋ผ๊ณ ๊ฐ์ ํ๋ ๊ฒ์ด ์์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@usmonster .then(...)
๊ฐ AppleWebkit(๋ฒ์ 538.1)์์ ์คํ๋์ง ์๋๋ค๋ ์ฐฝ์ ํ
์คํธํ ์ ์์ต๋๋ค.
@usmonster ๋๋ ๋ด ์์ ๋ฅผ ๋ง๋๋ ๋์ ์ผ์ข ์
@usmonster , @brcontainer , @niklasvh , ๋ฌธ์ ์ ๋ํ ๋ชจ๋ ๋์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค
@niklasvh onrendered๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๊ทธ๋์ ๋์ ๋ฌด์์ ์ฌ์ฉํ ์ ์์ต๋๊น? 0.5.0-alpha1์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ํ ์ด๋ฏธ์ง๊ฐ ๋์ผํ ๋๋ฉ์ธ์ ์์ด๋ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๋ก๋๋์ง ์์ต๋๋ค.
html2canvas($("#foredownload ํ
์ด๋ธ"), {
๋ก๊น
: ์ฌ์ค,
๋ ๋๋ง: function(c) {
var myImage = c.toDataURL("์ด๋ฏธ์ง/jpeg");
$('#downloadableImage').prop('href', myImage);
}
});
๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌ ํด์
@codegiant2 https://github.com/niklasvh/html2canvas#usage .
๊ฐ์ฌํฉ๋๋ค fperich ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค !!
@fperich
๋ง์ด ๋์์ฃผ์ธ์! ๊ฐ์ฌํฉ๋๋ค!
๋๋ ์ผ๊ตด์ด ์๋ฆฐ ๋ชธ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง์๋ค
(์์ bounds.height
from NodeContainer.prototype.parseBackgroundSize
- html2canvas 0.5.0-beta3 ) ๋ด
body {
background-image: url(./res/bg.jpeg);
background-repeat:no-repeat;
background-position:center center;
-o-background-size: cover;
-moz-background-size: cover;
-webkit-background-size: cover;
background-size: cover;
}
ํด๊ฒฐ ์ถ๊ฐ
html, body {
margin: 0;
padding: 0;
height: 100%;
}
์ด ๋ฉ์ง ์ฝ๋ ์กฐ๊ฐ์ ๋ํด niklasvh์ ๋ชจ๋ ๊ธฐ์ฌ์์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๋๋ ๋ํ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์บ๋ฒ์ค์ ํ์๋์ง ์๋ s3 ์ด๋ฏธ์ง์์ ๋ก๋ํ๊ณ ์์ง๋ง ์์คํ
์์ ๋ก์ปฌ๋ก ๋ก๋ ์ค์
๋๋ค. ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์ต๋๊น?
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค. ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค . ๋ฐฐ๊ฒฝ ๋ก๋ ์ค ์ค๋ฅ:
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ก ๋์์ฃผ์ธ์.
๊ฐ์ฌ ํด์,
์๋ ํ์ธ์ @gopis ๋ ,
corse ์ต์ ์ ์ฌ์ฉํ์ญ์์ค.
html2canvas(document.body, {
onrendered: function (canvas) {
.....
},
useCORS: true
});
@fxmontigny.
์ฌ์ ํ ํ
๋๋ฆฌ ์ด๋ฏธ์ง ๋ก๋ฉ ๋ฌธ์ ๊ฐ ์กด์ฌํฉ๋๋ค. ๋ด ์
๋ฐ์ดํธ๋ JSFiddle์ ์ฐธ์กฐํ์ญ์์ค.
๊ฒ์ ์ ํ
๋๋ฆฌ๋ง ํ์ํ๋ ํ
๋๋ฆฌ ์ด๋ฏธ์ง๊ฐ ๋ก๋๋์ง ์์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ์๋๋ ํฌ๋กฌ ์ฝ์์ ๋ก๊ทธ์
๋๋ค.
html2canvas: ์ฌ์ ๋ก๋ ์์: ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ์ฐพ๊ธฐ
html2canvas.js:21 html2canvas: ์์: ์ด๋ฏธ์ง: 1 / 1 (์คํจ: 0)
html2canvas.js:21 html2canvas: ์์: ์ด๋ฏธ์ง: 2 / 2 (์คํจ: 0)
html2canvas.js:21 html2canvas: ๋ฏธ๋ฆฌ ๋ก๋: ์ด๋ฏธ์ง ์ฐพ๊ธฐ
html2canvas.js:21 html2canvas: ์ฌ์ ๋ก๋: ์๋ฃ.
html2canvas.js:21 html2canvas: ์์: ์ด๋ฏธ์ง: 2 / 2 (์คํจ: 0)
html2canvas.js:21 ์ด๋ฏธ์ง ๋ก๋ ์๋ฃ: # 2 (์คํจ: 0)
html2canvas.js:21 html2canvas: ๋ฐฐ๊ฒฝ ๋ก๋ ์ค ์ค๋ฅ:
html2canvas.js:21 html2canvas: ๋ ๋๋ฌ: ์บ๋ฒ์ค ๋ ๋๋ฌ ์๋ฃ - ์บ๋ฒ์ค obj ๋ฐํ
์ด๊ฒ์ ์ฌ์ ํ v1.0.0 ์ ๋ฌธ์ ์ ๋๊น? ๊ทธ๋ ๋ค๋ฉด jsfiddle์ ๋ํ ์๋ฅผ
์ด ํธ๋ ์์ ์์ ์ถ๊ฐ ์ ๋ณด ์์ฒญ์ ๋ํ ์๋ต์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ข ๋ฃ๋์์ต๋๋ค. ํ์ฌ ๋ฌธ์ ์ ์๋ ์ ๋ณด๋ง์ผ๋ก๋ ์กฐ์น๋ฅผ ์ทจํ๊ธฐ์ ์ถฉ๋ถํ ์ ๋ณด๊ฐ ์์ต๋๋ค. ๋ ์กฐ์ฌํ ์ ์๋๋ก ํ์ํ ๋ต๋ณ์ด ์๊ฑฐ๋ ์ฐพ์ผ๋ฉด ์ฐ๋ฝํด ์ฃผ์ญ์์ค.
๋๊ตฐ๊ฐ์๊ฒ ๋์์ด ๋ ์ ์์ผ๋ ๋๊ธ๋ง ๋จ๊ฒจ์ฃผ์ธ์.
๋ด ๋ฌธ์ ๋ ๋ก์ปฌ์์ ๋ชจ๋ ๊ฒ์ด ์๋ํ์ง๋ง ํ๋ก๋์
์์๋ CSS ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ์คํจํ๋ค๋ ๊ฒ์
๋๋ค.
๊ทธ ์ด์ ๋ ์ฐ๋ฆฌ๊ฐ CloudFront๋ฅผ ์ฌ์ฉํ๊ณ ์์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฆ, css ํ์ผ์ URL์ cloudfront ๋๋ฉ์ธ์ ์์ฐ์ ์ฐธ์กฐํ๋ ๋ฐ๋ฉด JS๋ ๋ณ๋์ ๋๋ฉ์ธ์์ ์คํ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ html2canvas ๋ก๊ทธ๋ ๊ทธ๊ฒ์ด cors ๋ฌธ์ ์์ ๋ํ๋ด์ง ์์์ต๋๋ค.
'useCORS'๋ ํ๋ก์ URL ๋ฑ์ด ํ์ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์์ฒด์ ์ผ๋ก ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@jacobclarke ๋ํ html2canvas๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ S3 ์ด๋ฏธ์ง์ ์บ๋ฒ์ค์ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ์บก์ฒํ ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์บก์ฒ๋๊ณ ์์ง๋ง ํ๋ก๋์ ์์๋ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ์บก์ฒํ์ง ์์ต๋๋ค. ๋ด html2canvas ๋ฒ์ ์ v1.0.0์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋งํ ์ ์๊ณ ๋ฐฐ๊ฒฝ ํฌ๊ธฐ๋ฅผ ํฌํจํ๊ฑฐ๋ ํฌํจํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก 0.4.1 ๋ฒ์ ์์ 350ํ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ต๋๋ค.
topPos = isNaN(parseInt(bgposition[1], 10)) ? topPos : parseInt(bgposition[1], 10);
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์๋ํฉ๋๋ค!