近期有须要使用图片裁剪的功能,在使用插件和本身写裁剪组件之间犹豫了好久,后来根据需求通过反复的考虑,仍是本身封装吧,毕竟本身动手,丰衣足食,对吧?嗯,💪🏻💪🏻💪🏻是的!最后生成裁剪后的图片使用了 html2canvas
插件,实现了图片的裁剪功能。可是,发现需求之中居然有裁剪GIF的需求,然而个人裁剪组件并不能知足这个需求,还存在图片清晰度的问题。为了实现这个需求,在后端使用 node 插件进行截图,可是并无找个一个知足需求的插件,最后决定使用七牛云的图片高级处理
服务。在实现该功能的过程当中,对一些插件进行了总结,方便记忆,有什么不正确的地方,但愿你们多多指教!html
html2canvas
可以直接在浏览器端将整个页面或者部分页面生成截图,将DOM结构渲染成canvas画布。前端
解决办法:vue
html2canvas的配置项中配置 allowTaint:true 或 useCORS:true(两者不可共同使用); 使用反向代理或者服务器添加响应头 header("Access-Control-Allow-Origin: *")
Jcrop 是一个功能强大的 jQuery 图像裁剪插件,结合后端程序能够快速的实现图片裁剪的功能。(没有使用过...)node
第一次首先要安装 GraphicsMagick或者ImageMagick,Mac OS X可使用brew安装。jquery
安装: brew install imagemagick brew install graphicsmagick npm install --save gm 引入: var fs = require('fs') var gm = require('gm').subClass({imageMagick: true})
gm(`./upload/${req.body.name}`) .resize('300', '468', '^') .gravity('Center') .crop('200', '400') .write(`./upload/${cropName}`, function (e) {// 输出的图片路径 if(e) { console.log(e.message) }else { res.send({ stat: 1, data: { mesg: 'OK', url: `http://${req.headers.host}/upload/${cropName}` } }) console.log('done') }
安装 npm install --save sharp 引入: var sharp = require('sharp')
sharp('图片路径') .extract(top, left, width, height) .resize(150, 150) .sharpen() .quality(100) .toFile('裁剪以后保存的路径', function (err) { if (err) throw err; console.log('done!') res.send({ stat: 1, data: { mesg: 'OK', url: `http://${req.headers.host}/upload/${cropName}` } }) });
参考文献
http://shieldax.github.io/201... sharp裁剪git