Dr.*_*ini 7 javascript html5 canvas
我正在尝试<canvas>使用已绘制的图像来调整a的大小,但是我误会了该canvas.scale()方法的使用方法,因为它不会缩小...
码:
ImageRender.prototype.resizeTo = function () {
var canvas = $('#myCanvas')[0];
var ctx = canvas.getContext("2d");
//current image
var currImg = ctx.getImageData(0, 0, canvas.width, canvas.height);
//
var tempCanvas = $('canvas')[0];
var tempCtx = tempCanvas.getContext("2d");
tempCtx.putImageData(currImg, 0, 0)
//
ctx.scale(0.5, 0.5);
//redraw
ctx.drawImage(tempCanvas, 0, 0);
};
Run Code Online (Sandbox Code Playgroud)
我在俯视什么?
谢谢!
在调整原始画布的大小时,可以通过将内容从临时画布“弹起”来缩放内容。此保存+重绘过程是必需的,因为在调整画布的宽度或高度时,画布内容会自动清除。
示例代码:
var myCanvas=document.getElementById("canvas");
var ctx=myCanvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
var tempCanvas=document.createElement("canvas");
var tctx=tempCanvas.getContext("2d");
var img=new Image();
img.crossOrigin='anonymous';
img.onload=start;
img.src="https://dl.dropboxusercontent.com/u/139992952/multple/Dog-With-Cute-Cat.jpg";
function start(){
myCanvas.width=img.width;
myCanvas.height=img.height;
ctx.drawImage(img,0,0);
resizeTo(myCanvas,0.50);
}
function resizeTo(canvas,pct){
var cw=canvas.width;
var ch=canvas.height;
tempCanvas.width=cw;
tempCanvas.height=ch;
tctx.drawImage(canvas,0,0);
canvas.width*=pct;
canvas.height*=pct;
var ctx=canvas.getContext('2d');
ctx.drawImage(tempCanvas,0,0,cw,ch,0,0,cw*pct,ch*pct);
}Run Code Online (Sandbox Code Playgroud)
body{ background-color: ivory; }
#canvas{border:1px solid red; margin:0 auto; }Run Code Online (Sandbox Code Playgroud)
<h4>Canvas resized to 50%</h4>
<canvas id="canvas" width=300 height=300></canvas>
<h4>Img with original image</h4>
<img src='https://dl.dropboxusercontent.com/u/139992952/multple/Dog-With-Cute-Cat.jpg'>Run Code Online (Sandbox Code Playgroud)
小智 7
更简单的方法是使用 的额外参数drawImage()。第四个和第五个参数让您设置最终的宽度和高度。
此外,您可以直接绘制图像(或画布),而不需要获取 ImageData。
另外(2),我认为您可能也想调整画布的大小(只需使用其宽度和高度属性)
https://jsfiddle.net/mezeL06o/
| 归档时间: |
|
| 查看次数: |
11949 次 |
| 最近记录: |