canvas 在压缩图像尺寸的时候,如何克服图像因变小而导致锐化很严重的情况?

2018-01-15 08:53:27 +08:00
 alwayshere

看到 Smart Resize 这种基于 HTML5 批量裁剪缩放的工具时,也想自己做一个出来,但是,我在实际测试中,canvas 在将一个图像尺寸等比缩放得很小时,图像会变得非常锐利,有的时候甚至达到变形失真的程度,但是 Smart Resize ( https://www.smartresize.com/zh-cn )则完全不存在这一点,几乎不会失真,大家可以试一下,一张图片,通过自己的 canvas 等比变小图片尺寸(如 50x50px 这种小尺寸)时,图片锐化很严重,但是 Smart Resize 则不会,这到底用了什么算法?

3598 次点击
所在节点    程序员
3 条回复
Jealee
2018-01-15 09:11:13 +08:00
这个好像要用最近邻插值算法(nearest)或者双线性插值算法(Bilinear)效果会好一些。当初用 node-canvas 时输出相册遇到过类似问题。
Toninie
2018-01-15 09:19:11 +08:00
如果靠 canvas 来压缩图片确实会出现这个问题,可以试试这个插件,代码比较简单,也可以参考下源码,大概就是通过 canvas 获取原图的位图二维数组,然后就可以通过自己的算法压缩,再重新加载到 canvas 上
https://github.com/sapics/scale.js
tees
2018-01-15 10:13:44 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/422913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX