// Github项目每日优选 第2 篇
// 正文共 1520 字
// 预计阅读时间:8 分钟
各位宝友大家好,今天给大家带来了 smartcrop.js ,它是什么呢?通过名字我们大概能猜出来就是智能裁剪。我用我拙劣的东北英语大概翻译了下:Smartcrop.js 实现了一种算法来为图像找到好的裁剪。它提供了三种使用方式分别是 浏览器中、node、 和CLI 。
图像裁剪是许多 Web 应用程序中的常见工作,通常只需切出图像的中心符合我们预期大小就可以了。但其实有时可能会惨遭失败比如如下的例子。
其实我们可以做的更好,Smartcrop.js 是可以对内容感知,智能裁剪图像。它使用相当简单的图像处理和一些规则来尝试创建更好的图像裁剪。
我们再来一张横向的,其实原理都差不多。很多同学会说我不用这个库让用户自己调整不就得了,那就比如你去机场人脸识别买单和你要拿出手机、打开支付宝、打开支付宝、对准被商家。老铁说我就喜欢这样,做人嘛开心最重要。
先来一版本cli的
#失败了请sudo mac版本演示
npm install -g smartcrop-cli
brew install imagemagick
#选取宽度和高度为300作为裁剪大小生成square-thumbnail.jpg
smartcrop --width 300 --height 300 photo.jpg square-thumbnail.jpg
这里我拿了 王者荣耀的杨戬英雄头像、甚至是风景图都做了测试 结果其实还是蛮不错的。
这是浏览器版本的
//image用canvas或者直接img.onload对象都可以
smartcrop.crop(image, { width: 100, height: 100 }).then(function(result) {
//// smartcrop 将输出您对裁剪的最佳猜测
// 现在我们就可以基于此数据裁剪图像。
//{topCrop: {x: 300, y: 200, height: 200, width: 200}}
console.log(result);
});
//比如传统的jQuery操作就行
//参考网址 view-source:https://29a.ch/sandbox/2014/smartcrop/examples/testsuite.html
$('img').each(function () {
$(this).load(function () {
var img = this;
setTimeout(function () {
//把上面👆🏻代码写在这
}, 0);
});
});
Node.js中使用您可以通过 smartcrop-gm(通过 gm 使用 image magick)或 smartcrop-sharp(通过sharp 使用 libvips)从 nodejs 使用 smartcrop。当然我们也可以在node中使用shell。js直接调用smartcrop-cli.
作者说自己使用相当笨拙的图像处理工作😂。简而言之
smartcrop 算法本身被设计为简单、相对快速、小而通用。
在许多情况下,添加人脸检测以确保人脸获得应有的优先级确实是有意义的。有多个 javascript 库可以轻松集成到 smartcrop.js 中。
探索更先进的且JavaScript能用的人脸识别 http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/WiderFace_Results.html
前半部分我们一直都在说裁剪,那有的时候我们想把一张图片进行主题色填充成更大一张图片怎么办呢?比如如下的需求。
其实这个并不难我们可以用魔法数字法、八叉树提取法、最小插值法、中位切分法、聚类.......不过smartcrop.js推荐了dont-crop,我们也可以耍起来。
import {getPalette, fitGradient} from 'dont-crop';
const image = new Image();
image.src = "填写你的图片地址即可";
image.onload = () => {
console.log(getPalette(image));
// ['#000000', ...]
console.log(fitGradient(image));
// 'linear-gradient(#000000, #ffffff)`
}
image.src = 'example.jpg';
官方链接在这里 https://github.com/jwagner/smartcrop.js 再一次感谢您花费时间阅读这篇小文章,有什么想说的欢迎下方留言区留言~
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有