1
如何裁剪圖像然後將其繪製在畫布中心?圖像對象裁剪並在畫布中心繪製
目前我有一個放置div的地方,我可以放置一個圖像,然後由JavaScript提取。然後我想要JavaScript來檢查更高(高度或寬度)。如果高度最高,我希望它是200px,寬度可以根據縱橫比進行調整。之後,我希望JavaScript在畫布中繪製圖像的中心,畫布的中心位於畫布的中心。
當前的代碼我有,這是不工作(我不知道爲什麼):
(爲簡單起見,我剛剛通過從網絡到函數的圖像)
render('http://www.aboveandbeyond.nu/sites/www.aboveandbeyond.nu/files/news/europe_above_beyond_tour.jpg');
function render(src){
var image = new Image();
var canvas = document.getElementById("artworkcanvas");
var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
image.onload = function(){
var sourceX = 200;
var sourceY = 0;
var sourceWidth = 200;
var sourceHeight = 200;
var destWidth = sourceWidth;
var destHeight = sourceHeight;
var destX = canvas.width/2 - destWidth/2;
var destX = 0;
var destY = canvas.height/2 - destHeight/2;
var destY = 0;
var MAX_WIDTH = 200;
var MAX_HEIGHT = 200;
if (image.height == image.width) {
image.width = MAX_WIDTH;
image.height = MAX_HEIGHT;
} else {
if(image.height < image.width) {
console.log("height smaller");
image.width *= MAX_HEIGHT/image.height;
image.height = MAX_HEIGHT;
} else {
image.height *= MAX_WIDTH/image.width;
image.width = MAX_WIDTH;
}
}
ctx.clearRect(0, 0, canvas.width, canvas.height);
canvas.width = image.width;
canvas.height = image.height;
ctx.drawImage(image, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight);
};
image.src = src;
}
你因爲寬度和高度,這將無法正常工作的圖像元件上設置大小爲只讀。將* canvas *大小設置爲這些最大值並使用drawImage dest。尺寸來設置新的尺寸。 – K3N 2014-11-03 16:50:47