【Web前端问题】为什么在canvas上画图片比设置的尺寸大很多?
原图大小:750x1334
canvas大小: 750X1334
我要在750x1334的画布上,铺一个750x1334的图片作为背景。
代码如下:
var image = new Image() image.src = '/img/background.png'
image.onload = drawImg // 图片加载完成再执行
function drawImg () {
context.drawImage(image, 0, 0, 750, 1334)
}
canvas:
<canvas id='share' canvas-id='share' style='width:750px;height:1334px;'></canvas>
结果效果出来是这样的,左图为canvas,右图为这个原图的img作为比对,750x1334,也就是我最后想要画出来的效果
图片拉伸了非常多,这是为什么?
回答:
<canvas id='share' canvas-id='share' width="750" height="1334" style='width:750px;height:1334px;'></canvas>
canvas 的大小不是通过 style 设置的,这两个宽高是两码事。
回答:
看你说750x1334 应该是为了H5绘图,如果加上你的动态适配,在浏览器以模拟手机窗口打开,是一个绘制好的图片
但是你canvas标签本身是一个画布,我之前做了一个微信分享,前端绘图,我把代码贴给你,希望对你有帮助
var canvas = document.createElement('canvas'); canvas.width = 750;
canvas.height = 1206;
var ctx = canvas.getContext('2d');
var img = new Image();
img.onload = function () {
var img_left = new Image();
img_left.onload = function () {
var img_ewm = new Image();
img_ewm.onload=function(){
ctx.font = "24px 黑体";
ctx.drawImage(img, 0, 0);
ctx.drawImage(img_left, 310, 160, 115, 115);
ctx.drawImage(img_ewm, 310, 925, 115, 115);
ctx.fillStyle = "#773f15";
ctx.textAlign = 'center';
ctx.fillText('??', 375, 138);
//$('body').html(canvas);
$('.imageShare').attr('src', canvas.toDataURL("image/jpeg"))
}
img_ewm.src='./ewm.png';
img_ewm.crossOrigin = 'anonymous';
}
img_left.src = "./132.jpeg"
img_left.crossOrigin = "anonymous";
}
img.src = './result2.jpg';
img.crossOrigin = "anonymous";
注意 canvas 绘图,图片会有跨域问题,导致不能生成图片,所以需要配置同源
以上是 【Web前端问题】为什么在canvas上画图片比设置的尺寸大很多? 的全部内容, 来源链接: utcz.com/a/137749.html