javascript - 旋转后缩放图像并适合 Canvas

标签 javascript css html canvas

我正在尝试旋转图像并通过单击按钮将其调整到 Canvas 中。

最初我可以使图像适合 Canvas 大小,但是当我旋转图像时,它会恢复到其原始大小并且在 Canvas 中只能看到图像的一部分。即使在旋转时,我怎样才能使图像适合 Canvas 。

我在 markE 上看过一个关于 SO 的例子但是当图像大小时, Canvas 会缩放到图像的大小。我需要 Canvas 大小保持不变,图像大小在旋转和加载时相应地缩放。我试图通过 markE 尝试两个不同的答案来修改代码,但无法实现。

这是我的 JSFiddle

最佳答案

更新的 JS fiddle 链接 -

https://jsfiddle.net/oLyou41j/3/

var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");

var currentDegrees=0;

var image=document.createElement("img");
image.src="http://b.static.trunity.net/files/299501_299600/299598/vertical-farming-chris-jacobs.jpg";
image.onload=function(){
//Remove extra lines                
ctx.drawImage(image,0,0,canvas.height, canvas.width);
}


$("#clockwise").click(function(){ 
currentDegrees+=90;
drawRotated(currentDegrees);
});

$("#counterclockwise").click(function(){ 
   currentDegrees-=90;
drawRotated(currentDegrees);
});

function drawRotated(degrees){
ctx.clearRect(0,0,canvas.width,canvas.height);
ctx.save();
ctx.translate(canvas.width/2,canvas.height/2);
ctx.rotate(degrees*Math.PI/180);

//Changed Method
ctx.drawImage(image,-canvas.width/2,-canvas.height/2, canvas.height, canvas.width);
ctx.restore();
}

关于javascript - 旋转后缩放图像并适合 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41847928/

相关文章:

html - 在 Knockoutjs 中获取 foreach 别名的索引

javascript - 对齐表中的 td

javascript - 有没有办法在带有换行符 (\n) 的字符串中搜索子字符串?

css - 宽度 :100% without Position:absolute/fixed

javascript - 使用纯 JavaScript 将十字符号拖放到网格中的框中?

javascript - Facebook 和 google 如何随机化 html 选择器 id 和类名?

javascript - 如何从矩阵中获取图表

javascript - 如何使用 wp_localize_script 从另一个 php 文件传递​​参数

javascript - 如何在一个包中制作 href 链接和 <li>

css - 在固定宽度的 div 之间拉伸(stretch)中心 div 的问题