javascript - canvas绘制图片,使图片充满canvas容器,出现的问题
大家讲道理
大家讲道理 2017-04-11 11:26:30
[JavaScript讨论组]

目标:绘制一张图片,到canvas容器(canvas宽高固定)中

下面是我的实现方式:

var ctx = document.getElement('canvas').getContext('2d');
var img = new Image();
img.src = "xxx";
img.onload = function() {
    ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
}


(ps: 白色方框内为 cnvas容器);

绘制的图片为何不能充满容器,这和源图片大小有关系吗,因为我试着换成另外一张大图片,竟然可以充满容器绘制。是在不理解(按我的理解,这应该和源图片大小没有关系,因为已经限定了绘制宽高)

css: 代码

.canvas_wrap {
    position: absolute;
    width: 6.5rem;
    height: 4.2rem;
    left: 0.5rem;
    background: #d02608;
    margin: 0px auto;
}
.canvas {
    position: absolute;
    width: 100%;
    height: 100%;
    left: 0; top: 0;
    border-radius: 2px;
}

另外,在初始化中,已经将canvas的宽度设置为canvas的css宽度(高度也是一样的)

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(5)
PHP中文网
var ctx = document.getElement('canvas').getContext('2d');
var img = new Image();
img.src = "xxx";
img.onload = function() {
    ctx.drawImage(img, 0, 0, ctx.canvas.width, ctx.canvas.height);
}

这样试试。

巴扎黑

drawImage是有9个参数的。。

如文档描述:https://developer.mozilla.org...

你要使用这种写法 ctx.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);

s表示source就是图片的位置, d是canvas。明白不?

就是说 sx =0 ,sy =0, sWidth和sHeight就是图片宽高,
dx =0,dy=0, dWidth和dHeight就是canvas的宽高

怪我咯

看你的图片居中的样子,应该是图片是png的,本身就有透明的边距吧

黄舟

给<canvas>标签设置的宽高是元素的盒模型大小,canvas绘图区域的宽高要通过ctx设置,两个宽高表示的意义是不同的。将ctx的宽高设置为<canvas>的盒模型大小,才可以百分百填充。

怪我咯

各位,抱歉了,是我这里的图片问题(带透明边距)。抱歉

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号