nodejs图片裁剪、缩放、水印
博客专区 > caiyezi 的博客 > 博客详情
nodejs图片裁剪、缩放、水印
caiyezi 发表于1年前
nodejs图片裁剪、缩放、水印
  • 发表于 1年前
  • 阅读 41
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

关于nodejs下图片的裁剪、水印,网上的模块很多,主要如下:

gm:https://github.com/aheckmann/gm node-canvas:https://github.com/Automattic/node-canvas node-images:https://github.com/zhangyuanwei/node-images Cloudinary:http://cloudinary.com/documentation/node_image_manipulation

这里推荐使用gm模块,首先是安装:

先要安装GraphicsMagick或者ImageMagick,因为gm是基于这两种图形处理工具包的。

直接上源码:

var gm = require("gm"); var spawn = require('child_process').spawn; //提供生成node子进程的方法

var config = {}; config.position = { NorthWest:"NorthWest", North:"North", NorthEast:"NorthEast", West:"West", Center:"Center", East:"East", South:"South", SouthWest:"SouthWest", SouthEast:"SouthEast" }; /** * 裁剪图片 * @param srcImg 待裁剪的图片路径 * @param width 宽度 * @param height 高度 * @param x x坐标 * @param y y坐标 */
function cropCurrentImg(srcImg,width, height, x, y) { gm(srcImg).crop(width, height, x, y).write(srcImg, function (err) { if (err) { return handler(err); } }); } /** * 裁剪图片 * @param srcImg 待裁剪的图片路径 * @param destImg 裁剪后的图片路径 * @param width 宽度 * @param height 高度 * @param x x坐标 * @param y y坐标 */
function cropImg(srcImg,destImg,width, height, x, y) { gm(srcImg).crop(width, height, x, y).write(destImg, function (err) { if (err) { return handler(err); } }); } cropCurrentImg("../../public/aa.png","../../public/dest.jpg",100,100,50,50); /** * 缩放图片 * @param srcImg 待缩放的图片路径 * @param size 缩放后的图片大小(长宽均为size) */
function resizeCurrentImg(srcImg, size) { gm(srcImg).resize(size, size).write(srcImg, function (err) { if (err) { return handler(err); } }); } /** * 缩放图片,默认输出图片质量75%,格式PNG * @param srcImg 待缩放的图片路径 * @param destImg 缩放后的图片输出路径 * @param size 缩放后的图片大小(长宽均为size) */
function resizeImgWithArgs(srcImg, destImg, size) { gm(srcImg).resize(size, size).write(destImg, function (err) { if (err) { return handler(err); } }); } /** * 缩放图片 * @param srcImg 待缩放的图片路径 * @param destImg 缩放后的图片输出路径 * @param quality 缩放的图片质量,0~100(质量最优) * @param width 缩放后的图片宽度 * @param height 缩放后的图片高度 * @param imgFormat 缩放后的图片格式 */
function resizeImgWithFullArgs(srcImg, destImg, quality, width, height, imgFormat) { gm(srcImg).resize(width, height).quality(quality).setFormat(imgFormat).write(destImg, function (err) { if (err) { return handler(err); } }); } /** * 添加水印 * @param srcImg 待添加水印的图片路径 * @param watermarkImg 水印图片路径 * @param destImg 添加水印后图片输出路径 * @param alpha 透明度,0~100(为0表示全透明,100不透明) * @param position 水印位置,NorthWest, North, NorthEast, West, Center,East, SouthWest, South, or SouthEast */
function addWaterMark(srcImg,watermarkImg,destImg,alpha,position){ var composite = spawn('gm', ['composite', '-gravity', position, '-dissolve', alpha, watermarkImg, srcImg,destImg]); composite.on('exit', function (code) { }); } exports.config = config; exports.resizeCurrentImg = resizeCurrentImg; exports.resizeImgWithArgs = resizeImgWithArgs; exports.resizeImgWithFullArgs = resizeImgWithFullArgs; exports.cropCurrentImg = cropCurrentImg; exports.cropImg = cropImg; exports.addWaterMark = addWaterMark;

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 108
码字总数 0
×
caiyezi
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: