Javascript 如何同时旋转整个画布和绘制到画布中的图像?

Javascript 如何同时旋转整个画布和绘制到画布中的图像?,javascript,canvas,Javascript,Canvas,首先,使用下面的代码上传一个比它高的小图像 / /*css/external.css*/ *{ 浮动:左;清除:左; } #帆布{ 边缘顶部:10px; } 画布旋转 如果如您所述,您只需要旋转90度,那么它非常简单 图像的宽度将成为画布的高度,其高度将成为画布的宽度 从那以后,你只需要应用通常的方法 translate(target-center-x, target-center-y) rotate(angle) drawImage(img, -transform-origin, -tra

首先,使用下面的代码上传一个比它高的小图像

/
/*css/external.css*/
*{
浮动:左;清除:左;
}
#帆布{
边缘顶部:10px;
}

画布旋转

如果如您所述,您只需要旋转90度,那么它非常简单

图像的宽度将成为画布的高度,其高度将成为画布的宽度

从那以后,你只需要应用通常的方法

translate(target-center-x, target-center-y)
rotate(angle)
drawImage(img, -transform-origin, -transform-origin)
fileinput.onchange=e=>{
const img=新图像();
img.onload=e=>draw(img);
img.src=URL.createObjectURL(fileinput.files[0]);
};
功能图(img){
const ctx=canvas.getContext('2d');
canvas.width=img.height;
canvas.height=img.width;
//移动到画布的中心
ctx.translate(canvas.width/2,canvas.height/2);
ctx.旋转(数学PI/2);
//将变换原点设置在图像的中心
ctx.图纸图像(img,-img.width/2,-img.height/2);
}

如果如您所述,您只需要旋转90度,那么它非常简单

图像的宽度将成为画布的高度,其高度将成为画布的宽度

从那以后,你只需要应用通常的方法

translate(target-center-x, target-center-y)
rotate(angle)
drawImage(img, -transform-origin, -transform-origin)
fileinput.onchange=e=>{
const img=新图像();
img.onload=e=>draw(img);
img.src=URL.createObjectURL(fileinput.files[0]);
};
功能图(img){
const ctx=canvas.getContext('2d');
canvas.width=img.height;
canvas.height=img.width;
//移动到画布的中心
ctx.translate(canvas.width/2,canvas.height/2);
ctx.旋转(数学PI/2);
//将变换原点设置在图像的中心
ctx.图纸图像(img,-img.width/2,-img.height/2);
}


根据我的示例,您只想旋转90度?是的,画布和图像都要旋转。根据我的示例,您只想旋转90度?是的,画布和图像都要旋转。谢谢,它可以工作!像这样通过id获取元素有什么缺点吗?@PHPglue是的,很多,在生产中永远不要这样做。谢谢,它很有效!像这样通过id获取元素有什么缺点吗?@PHPglue是的,很多,在生产中永远不要这样做。