关于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图片裁剪、缩放、水印的更多相关文章

  1. nodejs图片裁剪、水印(使用images)

    /** * Created by chaozhou on 2015/9/21. */ var images = require("images"); /** * 缩放图像 * @p ...

  2. C#图片处理示例(裁剪,缩放,清晰度,水印)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  3. C#图片处理高级应用(裁剪,缩放,清晰度,水印)

    转自:http://wu-jian.cnblogs.com/ 前言 需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示.随便看一下, ...

  4. java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。

    java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...

  5. PHP图片裁剪_图片缩放_PHP生成缩略图

    在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多,每天更新大量图,靠人工PS处理是不现实的,那么有没有自动处理图片的程序了! ...

  6. php课程 8-32 如何使用gd库进行图片裁剪和缩放

    php课程 8-32 如何使用gd库进行图片裁剪和缩放 一.总结 一句话总结:图片缩放到图片裁剪就是改变原图截取的位置以及截取的宽高. 1.电商网站那么多的图片,如果全部加载卡得慢的很,所以他们是怎么 ...

  7. 【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)

    1 需求 表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢? 一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏 ...

  8. java 图片压缩 剪切 水印 转换 黑白 缩放

    专注java已6年,欢迎加入java核心技术QQ群:135138817,每周五晚有群主进行技术讲座. import java.awt.AlphaComposite; import java.awt.C ...

  9. 如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放

    如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放 参考网站:nginx-lua-fas ...

随机推荐

  1. lua 5.3 英文手册 google机器翻译版

    LUA Lua 5.3参考手册作者:Roberto Ierusalimschy,Luiz Henrique de Figueiredo,Waldemar Celes 版权所有©2015-2018 Lu ...

  2. 5.iptables--NAT

    开启Linux主机的核心转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward SNAT相关操作 隐藏网内主机的IP地址,也可以共享互联网.如果只是共享IP的话, ...

  3. 驼峰转大写(javaScript)

    var a = function(s){return s.replace(/([A-Z])/g,"_$1").toUpperCase();} F12控制台可以直接用

  4. [Swift]字符串大小写转换,同时实现本地化或设置语言环境

    在NSString中提供了3种字符串大小写转换方式:1. 转换字符串大小写2. 转换字符串大小写,并实现本地化3. 转换字符串大小写,并设置语言环境. 一. 转换字符串大小写如果只是想单纯的将字符串进 ...

  5. 解决wordcloud的一个error:Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27

    环境: 操作系统:Windows 7 64位 语言:Python 2.7.13 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:17:26) w ...

  6. 阿里java开发规范学习(附P3C IDEA插件 帮助规范的养成)

    浅析 阿里巴巴 Java 开发规约 (未完成) 更加优秀的页面展现请到浅析 阿里巴巴 Java 开发规约 contents 为什么要学 编程规约 P3C IDEA 插件 why-use 我们知道,一般 ...

  7. CH2401 送礼物(双向dfs)

    CH2401 送礼物 描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了.某神牛有N个礼物,且异常沉重,但是GY的力气也异常的大(-_- ...

  8. SpringBoot 启动的时候提示 Field *** in *** required a bean named 'entityManagerFactory' that could not be found.

    错误截图 后面发现原来和入口类代码有关. //@SpringBootApplication(scanBasePackages = {"org.jzc.odata.cboard",& ...

  9. python高级(二)—— python内置序列类型

    本文主要内容 序列类型分类: (1)容器序列.扁平序列 (2)可变序列.不可变序列 列表推导式 生成器表达式 元组拆包 切片 排序(list.sort方法和sorted函数) bisect pytho ...

  10. Entity Framework添加记录时获取自增ID值

    与Entity Framework相伴的日子痛并快乐着.今天和大家分享一下一个快乐,两个痛苦. 先说快乐的吧.Entity Framework在将数据插入数据库时,如果主键字段是自增标识列,会将该自增 ...