兩套
line 21: 這裡可以直接指定img.src
l,例如,img.src="img/0001.jpg"。但是這裡用了物件FileReader
的一個函數readAsDataURL()
<html> <head> <style> </style> <script> </script> </head> <body> <input type="file" id="browse" > <img id="img"> <script> var reader = new FileReader(); reader.onload = function(e) { // e: progressEvent // e.target: FileReader Object // e.target.result就是圖片的base64位址資訊(result of readAsDataURL) img.src = e.target.result; }; browse.addEventListener('change', function (event) { reader.readAsDataURL(event.target.files[0]); }); </script> </body> </html>
<html> <head> <style> canvas{ border: solid red; } img{ border:solid green; } </style> <script> function imgDetail(){ detail.innerHTML="寬度 " +img.naturalWidth + " 高度 " + img.naturalHeight; } function draw3() { var context = canvas.getContext('2d'); canvas.width = 400; //注意:利用css 分別Width,Height為400px,300px 會無法正確縮放。 canvas.height = 300; context.drawImage(img,parseInt(cLeft.value),parseInt(cTop.value)); } function draw5() { //autoscale to canvas size var context = canvas.getContext('2d'); canvas.width = 400; //注意:利用css 分別Width,Height為400px,300px 會無法正確縮放。 canvas.height = 300; context.drawImage(img,parseInt(cLeft.value),parseInt(cTop.value),parseInt(cWidth.value),parseInt(cHeight.value)); } function draw9() { var context = canvas.getContext('2d'); canvas.width = 400; //注意:利用css 分別Width,Height為400px,300px 會無法正確縮放。 canvas.height = 300; context.drawImage(img,parseInt(sLeft.value),parseInt(sTop.value),parseInt(sWidth.value),parseInt(sHeight.value),parseInt(cLeft.value),parseInt(cTop.value),parseInt(cWidth.value),parseInt(cHeight.value)); } </script> </head> <body> <input type="file" id="browse" > <br> <img id="img" Width="200px" Height="100px" onload="imgDetail()"> <div id="detail"></div> <hr> <br> <canvas id="canvas"></canvas> <br> canvas Left<input type="text" id="cLeft" value="0"> <br> canvas Top<input type="text" id="cTop" value="0"> <br> canvas Width<input type="text" id="cWidth" value="400"> <br> canvas Height<input type="text" id="cHeight" value="300"> <br> Image Left<input type="text" id="sLeft" value="0"> <br> Image Top<input type="text" id="sTop" value="0"> <br> Image Width<input type="text" id="sWidth" value="200"> <br> Image Height<input type="text" id="sHeight" value="200"> <br> <input type="button" value="draw3" onclick="draw3()"> <input type="button" value="draw5" onclick="draw5()"> <input type="button" value="draw9" onclick="draw9()"> <br> <br> <script> var reader = new FileReader(); reader.onload = function(e) { // e: progressEvent // e.target: FileReader Object // e.target.result就是圖片的base64位址資訊(result of readAsDataURL) img.src = e.target.result; //draw2Canvas(); //放在這裡,由於非同步問題,有時候沒有圖形,另外放在按鈕(label:draw2Canvas)。 }; browse.addEventListener('change', function (event) { reader.readAsDataURL(event.target.files[0]); }); </script> </body> </html>
<html> <head> <style> canvas{ border: solid red; } img{ border:solid green; } </style> <script> function imgDetail(){ detail.innerHTML="寬度 " +img.naturalWidth + " 高度 " + img.naturalHeight; } function downloadURI(uri, name) { //demo: //downloadURI("data:text/html,HelloWorld!", "helloWorld.txt"); var link = document.createElement("a"); link.download = name; link.href = uri; document.body.appendChild(link); link.click(); document.body.removeChild(link); delete link; } function downIcon(){ var alist=document.getElementsByTagName('canvas'); var names=[ 'drawable-ldpi-icon', 'drawable-mdpi-icon', 'drawable-hdpi-icon', 'drawable-xhdpi-icon', 'drawable-xxhdpi-icon.png', 'drawable-xxxhdpi-icon.png'] var durl; for (i=0;i<alist.length;i++){ durl=alist[i].toDataURL("image/png"); downloadURI(durl,names[i]); } } function draw2Canvas(aCanvas,width,height) { var context = aCanvas.getContext('2d'); aCanvas.width = width; //注意:利用css 分別Width,Height為400px,300px 會無法正確縮放。 aCanvas.height = height; context.drawImage(img,0,0,width,height); } function toIcon(){ var alist=document.getElementsByTagName('canvas'); var rects=[[36,36],[48,48],[72,72],[96,96],[144,144],[192,192]]; var ctx; for (i=0;i<alist.length;i++){ draw2Canvas(alist[i],rects[i][0],rects[i][1]); } } </script> </head> <body> <input type="file" id="browse" > <br> <img id="img" Width="200px" Height="100px" onload="imgDetail()"> <div id="detail"></div> <hr> <br> <canvas></canvas> <canvas></canvas> <canvas></canvas> <canvas></canvas> <canvas></canvas> <canvas></canvas> <br> <input type="button" value="轉換" onclick="toIcon()"> <br> <input type="button" value="下載" onclick="downIcon()"> <br> <script> var reader = new FileReader(); reader.onload = function(e) { // e: progressEvent // e.target: FileReader Object // e.target.result就是圖片的base64位址資訊(result of readAsDataURL) img.src = e.target.result; //draw2Canvas(); //放在這裡,由於非同步問題,有時候沒有圖形,另外放在按鈕(label:draw2Canvas)。 }; browse.addEventListener('change', function (event) { reader.readAsDataURL(event.target.files[0]); }); </script> </body> </html>
<html> <head> <title>HTML5 Canvas塗鴉板</title> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.4.js"> </script> <style> body,input { font-size: 9pt; } #dCanvas,#dLine { clear: both; } .option { float: left; width: 20px; height: 20px; border: 2px solid #cccccc; margin-right: 4px; margin-bottom: 4px; } .active { border: 2px solid black; } .lw { text-align: center; vertical-align: middle; } img.output { border: 1px solid green; } #cSketchPad { cursor: arrow; } </style> </head> <body> <div id="dPallete"></div> <div id="dLine"></div> <div id="dCanvas"> <canvas id="aPad" width="300" height="300" style="border: 2px solid gray" /> </div> <input type="button" id="bGenImage" value="Generate Image" /> <div id="dOutput"></div> <script> var aPad = document.getElementById("aPad"); var ctx = aPad.getContext("2d"); ctx.lineCap = "round"; ctx.fillStyle = "white"; //白底 ctx.fillRect(0, 0, aPad.width, aPad.height); var drawMode = false; //canvas點選、移動、放開按鍵事件時進行繪圖動作 aPad.onmousedown=function (e) { ctx.beginPath(); ctx.strokeStyle = "red";//p_color; ctx.lineWidth = 2;//p_width; //ctx.moveTo(e.pageX - aPad.position().left, e.pageY - aPad.position().top); offset = aPad.getBoundingClientRect(); ctx.moveTo(e.pageX-offset.left,e.pageY-offset.top); drawMode = true; } aPad.onmousemove=function (e) { if (drawMode) { //ctx.lineTo(e.pageX - aPad.position().left, e.pageY - aPad.position().top); offset = aPad.getBoundingClientRect(); ctx.lineTo(e.pageX-offset.left,e.pageY-offset.top); ctx.stroke(); } } aPad.onmouseup=function (e) { drawMode = false; } </script> </body> </html>
<html> <head> <title>HTML5 Canvas塗鴉板</title> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.4.js"> </script> <style> body,input { font-size: 9pt; } #dCanvas,#dLine { clear: both; } .option { float: left; width: 20px; height: 20px; border: 2px solid #cccccc; margin-right: 4px; margin-bottom: 4px; } .active { border: 2px solid black; } .lw { text-align: center; vertical-align: middle; } img.output { border: 1px solid green; } #cSketchPad { cursor: arrow; } </style> </head> <body> <div id="dPallete"></div> <div id="dLine"></div> <div id="dCanvas"> <canvas id="aPad" width="300" height="300" style="border: 2px solid gray" /> </div> <input type="button" id="bGenImage" value="Generate Image" /> <div id="dOutput"></div> <script> //prepare color var colors = "red;orange;yellow;green;blue;indigo;purple;black;white".split(';'); var sb = []; colors.forEach(function(e){ sb.push("<div class='option' style='background-color:" + e + "'></div>"); }); document.getElementById("dPallete").innerHTML= sb.join("\n"); var p_color; var clrs = document.getElementById("dPallete").getElementsByClassName("option"); for (i=0;i<clrs.length-1;i++){ //onclick改變顏色 clrs[i].onclick= function(){ p_color= this.style.backgroundColor;}; }; //main work var aPad = document.getElementById("aPad"); var ctx = aPad.getContext("2d"); ctx.lineCap = "round"; ctx.fillStyle = "white"; //白底 ctx.fillRect(0, 0, aPad.width, aPad.height); var drawMode = false; //canvas點選、移動、放開按鍵事件時進行繪圖動作 aPad.onmousedown=function (e) { ctx.beginPath(); ctx.strokeStyle = p_color; ctx.lineWidth = 2;//p_width; //ctx.moveTo(e.pageX - aPad.position().left, e.pageY - aPad.position().top); offset = aPad.getBoundingClientRect(); ctx.moveTo(e.pageX-offset.left,e.pageY-offset.top); drawMode = true; } aPad.onmousemove=function (e) { if (drawMode) { //ctx.lineTo(e.pageX - aPad.position().left, e.pageY - aPad.position().top); offset = aPad.getBoundingClientRect(); ctx.lineTo(e.pageX-offset.left,e.pageY-offset.top); ctx.stroke(); } } aPad.onmouseup=function (e) { drawMode = false; } </script> </body> </html>
<html> <head> <title>HTML5 Canvas塗鴉板</title> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.4.js"> </script> <style> body,input { font-size: 9pt; } #dCanvas,#dLine { clear: both; } .option { float: left; width: 20px; height: 20px; border: 2px solid #cccccc; margin-right: 4px; margin-bottom: 4px; } .active { border: 2px solid black; } .lw { text-align: center; vertical-align: middle; } img.output { border: 1px solid green; } #cSketchPad { cursor: arrow; } </style> </head> <body> <div id="dPallete"></div> <div id="dLine"></div> <div id="dCanvas"> <canvas id="aPad" width="300" height="300" style="border: 2px solid gray" /> </div> <input type="button" id="bGenImage" value="Generate Image" /> <div id="dOutput"></div> <script> //prepare color var colors = "red;orange;yellow;green;blue;indigo;purple;black;white".split(';'); var sb = []; colors.forEach(function(e){ sb.push("<div class='option' style='background-color:" + e + "'></div>"); }); document.getElementById("dPallete").innerHTML= sb.join("\n"); var p_color; var clrs = document.getElementById("dPallete").getElementsByClassName("option"); //prepare width sb = []; for (var i = 1; i <= 9; i++) sb.push("<div class='option lw'>" + "<div style='margin-top:#px;margin-left:#px;width:%px;height:%px'></div></div>" .replace(/%/g, i).replace(/#/g, 10 - i / 2)); document.getElementById("dLine").innerHTML= sb.join("\n"); var p_width; var lws = document.getElementById("dLine").getElementsByClassName("option"); //lws HTMLCollection, lws[0]=lws.item(0) for (i=0;i<clrs.length-1;i++){ //onclick改變顏色 clrs[i].onclick= function(){ p_color= this.style.backgroundColor; //$lws.children("div").css("background-color", p_color); for (var j=0;j<lws.length-1;j++){ //lws[j].children[0].css("background-color", p_color); lws[j].children[0].style["background-color"]=p_color; } }; }; clrs[0].click(); for (i=0;i<lws.length-1;i++){ //onclick改變顏色 lws[i].onclick= function(){ p_width= this.children[0].style["width"].replace("px", ""); }; }; //main work var aPad = document.getElementById("aPad"); var ctx = aPad.getContext("2d"); ctx.lineCap = "round"; ctx.fillStyle = "white"; //白底 ctx.fillRect(0, 0, aPad.width, aPad.height); var drawMode = false; //canvas點選、移動、放開按鍵事件時進行繪圖動作 aPad.onmousedown=function (e) { ctx.beginPath(); ctx.strokeStyle = p_color; ctx.lineWidth = p_width; //ctx.moveTo(e.pageX - aPad.position().left, e.pageY - aPad.position().top); offset = aPad.getBoundingClientRect();//canvas 的左上,右下 ctx.moveTo(e.pageX-offset.left,e.pageY-offset.top); drawMode = true; } aPad.onmousemove=function (e) { if (drawMode) { //ctx.lineTo(e.pageX - aPad.position().left, e.pageY - aPad.position().top); offset = aPad.getBoundingClientRect(); ctx.lineTo(e.pageX-offset.left,e.pageY-offset.top); ctx.stroke(); } } aPad.onmouseup=function (e) { drawMode = false; } // 產生image //利用.toDataqURL()將繪圖結果轉成圖檔 document.getElementById("bGenImage").onclick=function(){ document.getElementById("dOutput").innerHTML= '<img src="' +aPad.toDataURL() +'"/>'; }; </script> </body> </html>