【问题标题】:Rotate an image and draw on canvas旋转图像并在画布上绘制
【发布时间】:2017-10-03 15:11:30
【问题描述】:

我一直在尝试不同的方法来在大小为 1080*1920 的画布上从大小为 1920*1080 的视频流中绘制图像。我想将视频旋转 -90º,使其完全适合画布(不是通过缩小和扩大来调整原始视频的大小)。以下是我尝试过的:

canvas = document.createElement('canvas');
canvas.height = 1920;
canvas.width = 1080;
context = canvas.getContext('2d');
context.drawImage(videoSrc, 0, 0, 1080, 1920, 1080, -1920, 1080, 1920);
// I have been trying different combinations of above numbers
return canvas;  

我没有使用context.rotate() 或任何其他翻译方法,因为我不想旋转画布,只想从画布中的不同位置开始绘制视频。也许我错了。感谢阅读

【问题讨论】:

  • 我已经有一段时间没有使用这些了,但我认为通常是通过旋转上下文、绘制然后重置上下文来完成的。
  • 您的意思是旋转我的上下文,使其具有相同的视频尺寸,将视频绘制到画布上,然后恢复原始上下文?

标签: javascript html5-canvas transformation


【解决方案1】:

在绘制图像之前,您需要在上下文中调用rotate()。像这样:

canvas = document.createElement('canvas');
canvas.height = 1920;
canvas.width = 1080;

//Angle to rotate, negative for counter clockwise
degrees = 45; 

context = canvas.getContext('2d');

//Rotation calculated in radians (hence the math).
context.rotate(degrees * Math.PI / 180);

context.drawImage(videoSrc, 0, 0, 1080, 1920, 1080, -1920, 1080, 1920);

//Reset rotation
context.resetTransform();

return canvas; 

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-02-14
  • 2015-11-03
  • 1970-01-01
  • 2016-11-21
  • 2013-11-06
  • 2018-06-02
  • 2011-05-30
  • 1970-01-01
相关资源
最近更新 更多