我是靠谱客的博主 幽默可乐,最近开发中收集的这篇文章主要介绍nodejs图片裁剪、缩放、水印,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

关于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;

 

转载于:https://my.oschina.net/caiya928/blog/784054

最后

以上就是幽默可乐为你收集整理的nodejs图片裁剪、缩放、水印的全部内容,希望文章能够帮你解决nodejs图片裁剪、缩放、水印所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部