栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用javascript画布调整图像大小(平滑)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用javascript画布调整图像大小(平滑)

您可以使用降级以获得更好的结果。调整图像大小时,大多数浏览器似乎使用线性插值而不是双三次插值。

更新
在规范中添加了品质属性,该属性

imageSmoothingQuality
当前仅在Chrome中可用。)

除非没有选择平滑或最接近的邻居,否则浏览器将始终在缩小图像后对图像进行插值,因为此功能用作低通滤波器以避免混叠。

双线性使用2x2像素进行插值,而双三次使用4x4进行插值,因此,通过逐步执行此操作,可以在使用双线性插值时接近双三次结果,如在所得图像中看到的那样。

var canvas = document.getElementById("canvas");var ctx = canvas.getContext("2d");var img = new Image();img.onload = function () {    // set size proportional to image    canvas.height = canvas.width * (img.height / img.width);    // step 1 - resize to 50%    var oc = document.createElement('canvas'),        octx = oc.getContext('2d');    oc.width = img.width * 0.5;    oc.height = img.height * 0.5;    octx.drawImage(img, 0, 0, oc.width, oc.height);    // step 2    octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5);    // step 3, resize to final size    ctx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5,    0, 0, canvas.width, canvas.height);}img.src = "//i.imgur.com/SHo6Fub.jpg";<img src="//i.imgur.com/SHo6Fub.jpg" width="300" height="234"><canvas id="canvas" width=300></canvas>

如果差异不大,则取决于您调整大小的激烈程度,您可以跳过第2步。

在演示中,您可以看到新结果现在与image元素非常相似。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号