說我們有一個帆布:旋轉畫布順時針旋轉90度,並更新寬度高度
<canvas id="one" width="100" height="200"></canvas>
而上的按鈕點擊畫布被順時針旋轉90度(圍繞中心)和畫布的尺寸也得到更新,所以在某種意義上,它看起來像這樣算賬:
<canvas id="one" width="200" height="100"></canvas>
注意畫布的ID是一樣的。
想象一下,簡單地順時針旋轉圖像,而不會裁剪或填充圖像。
任何建議之前,我這樣做創建一個新的畫布和逐個像素的像素旋轉和複製的漫長方式?
UPDATE樣品與建議代碼註釋仍然沒有工作:
function imageRotatecw90(){
var canvas = document.getElementById("one");
var context = canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
var myImageData = context.getImageData(0,0, cw,ch);
context.save();
context.translate(cw/2, ch/2);
context.rotate(Math.PI/2);
context.putImageData(myImageData, 0, 0);
context.restore();
canvas.width=ch;
canvas.height=cw;
}
爲什麼通過像素複製像素?爲什麼不把圖像作爲圖像數據抓取,調整畫布大小,旋轉上下文,然後將畫布圖像設置爲之前的圖像數據?這是關於十幾行非常簡單的代碼。 – Stephen
@Stephen我會試試看。希望沒有陷阱。 – zaf
@Stephen我試過使用ImageData,但它沒有做任何改變畫布尺寸的部分 – zaf