【问题标题】:canvas.drawImage blows the cropped imaged out of proportioncanvas.drawImage 使裁剪后的图像不成比例
【发布时间】:2015-09-02 05:53:46
【问题描述】:

渲染以下图像时(右键单击+查看图像以查看完整尺寸):

大小为 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);
}

有人知道这是为什么吗?

【问题讨论】:

    标签: javascript css html canvas drawimage


    【解决方案1】:

    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);
    }
    

    【讨论】:

    • @DrorHeller 没问题,很高兴我能帮上忙! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2012-01-07
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多