簡體   English   中英

canvas.drawImage將裁剪的圖像吹成比例

[英]canvas.drawImage blows the cropped imaged out of proportion

渲染以下圖像時(右鍵單擊+查看圖像以查看完整大小):

http://cdn.cocimg.com/bbs/attachment/Fid_14/14_29173_56b5563d9a81a86.png

大小為4800x320,帶有html5 canvas.drawImage()並嘗試從中裁剪出部分480x320的圖像,畫布會將圖像放大。

這是我的代碼:

var canvas = document.createElement('canvas');
canvas.setAttribute('id', 'my-canvas');
canvas.style.width = 480;
canvas.style.height = 320;
canvas.style.display = 'block';

document.body.appendChild(canvas);

var img=document.createElement('img');
img.src='http://cdn.cocimg.com/bbs/attachment/Fid_14/14_29173_56b5563d9a81a86.png';
img.onload = function () {
  var c=document.getElementById('my-canvas');
  var ctx=c.getContext('2d');
  ctx.drawImage(img,480,0,480,320,0,0,480,320);
}

另外,當我以較小的比例繪制圖像時,它突然適合:

var canvas = document.createElement('canvas');
canvas.setAttribute('id', 'my-canvas');
canvas.style.width = 480;
canvas.style.height = 320;
canvas.style.display = 'block';

document.body.appendChild(canvas);

var img=document.createElement('img');
img.src='http://cdn.cocimg.com/bbs/attachment/Fid_14/14_29173_56b5563d9a81a86.png';
img.onload = function () {
  var c=document.getElementById('my-canvas');
  var ctx=c.getContext('2d');
  ctx.drawImage(img,480,0,480,320,0,0,240,160);
}

有人知道為什么嗎?

Canvas的默認位圖大小為300x150像素。 設置CSS大小不會更改位圖大小。 使用位圖的寬度/高度屬性/屬性直接在元素上進行設置。 如果不是,則將拉伸位圖以填充元素CSS大小。

更改這些:

canvas.style.width = 480;
canvas.style.height = 320;

canvas.width = 480;
canvas.height = 320;

您還可以設置代碼以重用上下文:

//var c=document.getElementById('my-canvas'); // you already have this as canvas
var ctx=canvas.getContext('2d');              // global/parent scope

var img=document.createElement('img');
img.src='http://cdn.cocimg.com/bbs/attachment/Fid_14/14_29173_56b5563d9a81a86.png';
img.onload = function () {
  ctx.drawImage(img,480,0,480,320,0,0,480,320);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM