canvas putImageData()
putImageData方法會將影像資料繪製到畫布,影像資料是ImageData物件。
通常和getImageData()方法配合使用,具體參閱canvas getImageData操作畫素一章節。
語法結構一:
[JavaScript] 純文字檢視 複製程式碼ctx.putImageData(imagedata, dx, dy);
引數解析:
(1).imagedata:包含影像資料的一個物件,關於此物件參閱canvas getImageData操作畫素一章節。
(2).dx:源影像資料在目標畫布中的位置偏移量(x 軸方向的偏移量)。
(3).dy:源影像資料在目標畫布中的位置偏移量(y 軸方向的偏移量)。
程式碼例項中,我們會使用如下圖片:
特別說明:圖片的每一個方格的尺寸103x33畫素。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> canvas { border: 2px dotted #ccc; } </style> <script> window.onload = function () { var cvs = document.getElementById("canvas"); var img = document.getElementById("ant"); var obt = document.getElementById("bt"); var ctx = cvs.getContext("2d"); obt.onclick = function () { ctx.drawImage(img, 0, 0); var imgData = ctx.getImageData(0, 0, cvs.width, cvs.height); ctx.putImageData(imgData, 0, 0); } } </script> </head> <body> <img id="ant" src="mytest/demo/mybg.png"><br/> <canvas id="canvas" width="738" height="280"></canvas><br/> <input type="button" id="bt" value="檢視效果"/> </body> </html>
上面的程式碼可以將源資料放置於畫布上,開始防止的座標是(0,0)。
語法結構二:
[JavaScript] 純文字檢視 複製程式碼ctx.putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight)
引數解析:
(1).imagedata:包含影像資料的一個物件,關於此物件參閱canvas getImageData操作畫素一章節。
(2).dx:源影像資料在目標畫布中的位置偏移量(x 軸方向的偏移量)。
(3).dy:源影像資料在目標畫布中的位置偏移量(y 軸方向的偏移量)。
(4).dirtyX:在源影像資料中,矩形區域左上角的位置。預設是整個影像資料的左上角(x 座標)。
(5).dirtyY:在源影像資料中,矩形區域左上角的位置。預設是整個影像資料的左上角(y 座標)。
(6).dirtyWidth:在源影像資料中,矩形區域的寬度。預設是影像資料的寬度。
(7).dirtyHeight:在源影像資料中,矩形區域的高度。預設是影像資料的高度。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> canvas { border: 2px dotted #ccc; } </style> <script> window.onload = function () { var cvs = document.getElementById("canvas"); var img = document.getElementById("ant"); var obt = document.getElementById("bt"); var ctx = cvs.getContext("2d"); obt.onclick = function () { ctx.drawImage(img, 0, 0); var imgData = ctx.getImageData(0, 0, cvs.width, cvs.height); ctx.clearRect(0, 0, 738,280); ctx.putImageData(imgData, 20, 20,103,33,206,66); } } </script> </head> <body> <img id="ant" src="mytest/demo/mybg.png"><br/> <canvas id="canvas" width="738" height="280"></canvas><br/> <input type="button" id="bt" value="檢視效果"/> </body> </html>
上面的程式碼演示第二種語法結構,下面做一下分析。
[JavaScript] 純文字檢視 複製程式碼ctx.putImageData(imgData, 20, 20,103,33,206,66);
我們規定從畫布(20,20)開始繪製資料,然而實際的表現看起來遠大於這個座標:
其實這並沒有錯,因為我們規定從源資料(103,33)位置開始讀取資料,那麼很自然沒有讀取的部分顯示為空白。
相關文章
- canvasCanvas
- WPF C# create canvas and draw ellipse in canvasC#Canvas
- canvas rect()Canvas
- canvas strokeStyleCanvas
- canvas lineTo()Canvas
- canvas strokeRect()Canvas
- canvas createRadialGradient()Canvas
- canvas createLinearGradient()Canvas
- canvas arc()Canvas
- canvas stroke()Canvas
- canvas fill()Canvas
- canvas fillStyleCanvas
- canvas setTransform()CanvasORM
- canvas transform()CanvasORM
- 初探canvasCanvas
- canvas closePath()Canvas
- canvas moveTo()Canvas
- canvas beginPath()Canvas
- canvas getContext()CanvasContext
- canvas getImageData()Canvas
- canvas isPointInPath()Canvas
- canvas drawImage()Canvas
- canvas clip()Canvas
- canvas arcTo()Canvas
- canvas createPattern()Canvas
- canvas createImageData()Canvas
- canvas restore()CanvasREST
- canvas translate()Canvas
- canvas rotate()Canvas
- canvas scale()Canvas
- canvas measureText()Canvas
- canvas fillText()Canvas
- canvas save()Canvas
- canvas clearRect()Canvas
- canvas fillRect()Canvas
- canvas(三)Canvas
- canvas toDataURL()Canvas
- canvas toBlob()Canvas