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;
nodejs图片裁剪、缩放、水印的更多相关文章
- nodejs图片裁剪、水印(使用images)
/** * Created by chaozhou on 2015/9/21. */ var images = require("images"); /** * 缩放图像 * @p ...
- C#图片处理示例(裁剪,缩放,清晰度,水印)
C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...
- C#图片处理高级应用(裁剪,缩放,清晰度,水印)
转自:http://wu-jian.cnblogs.com/ 前言 需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示.随便看一下, ...
- java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。
java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...
- PHP图片裁剪_图片缩放_PHP生成缩略图
在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多,每天更新大量图,靠人工PS处理是不现实的,那么有没有自动处理图片的程序了! ...
- php课程 8-32 如何使用gd库进行图片裁剪和缩放
php课程 8-32 如何使用gd库进行图片裁剪和缩放 一.总结 一句话总结:图片缩放到图片裁剪就是改变原图截取的位置以及截取的宽高. 1.电商网站那么多的图片,如果全部加载卡得慢的很,所以他们是怎么 ...
- 【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)
1 需求 表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢? 一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏 ...
- java 图片压缩 剪切 水印 转换 黑白 缩放
专注java已6年,欢迎加入java核心技术QQ群:135138817,每周五晚有群主进行技术讲座. import java.awt.AlphaComposite; import java.awt.C ...
- 如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放
如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放 参考网站:nginx-lua-fas ...
随机推荐
- lua之base64加密和解密算法。
local function encodeBase64(source_str) local b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop ...
- [51nod] 1090 3个数和为0 暴力+二分
给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到 ...
- idea debug 启动慢出现假死
断点设置不合理引发应用启动慢问题java idea应用启动很慢|非常慢|超级慢的问题排查! 解决关于应用启动超慢这个问题,其实两年前就已经遇到过,https://blog.csdn.net/li396 ...
- linux和windows之间的文件压缩和解压缩以及^R的问题
推荐大家使用zip压缩和解压,因为zip一般是linux系统自带: 一.zip和unzip 1. zip压缩 zip -r myfile.zip ./web 将当前目录里的web下的所有文件和文件夹全 ...
- iOS 轻松使用 App 数据统计
想获取用户各项行为数据吗? 想轻松查看用户行为图表吗? 想高效进行 App 运营管理吗? 想,来我带你玩转 App 数据统计.这里我使用专业.轻便的 JAnalytics. 本文内容分为两部分:代码示 ...
- 阿里云服务主机部署Thinkphp系统错误解决方案
最近在阿里云上购买了虚拟主机,于是有了把自己的网站挂在云上的冲动,那就行动呗.本来想的很简单,以为在修改数据库配置之后,将文件打包上传,然后就可以了,可在实际操作过程中,出现了很多问题,找了很多资料, ...
- Luogu P1886 滑动窗口
P1886 滑动窗口 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: The a ...
- python爬虫之urllib库(二)
python爬虫之urllib库(二) urllib库 超时设置 网页长时间无法响应的,系统会判断网页超时,无法打开网页.对于爬虫而言,我们作为网页的访问者,不能一直等着服务器给我们返回错误信息,耗费 ...
- google浏览器安装不上的绝望经历
手贱把google的一些文件删除了,整个浏览器都没法打开 决定重装下,但是连卸载的功能都无法打开了 于是决定上网重新下载了个安装包,发现安装包都打不来 很绝望,查了很多资料 很多人说要删除注册表的东西 ...
- Linux - 组管理和权限管理
l Linux组基本介绍 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. 1) 所有者 2) 所在组 3) 其它组 4) 改变用户所在的 ...