文档章节

nodejs图片裁剪、缩放、水印

c
 caiyezi
发布于 2016/11/08 20:23
字数 587
阅读 50
收藏 0
点赞 0
评论 0

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

 

本文转载自:http://www.cnblogs.com/vipzhou/p/4798769.html

共有 人打赏支持
c
粉丝 1
博文 108
码字总数 0
作品 0
西安
程序员
PhalApi-Image -- 图像处理

PhalApi-Image -- 图像处理 前言 因为在工作中遇到了需要按照尺寸压缩上传图片,进过了一番寻找发现ThinkPhP图形处理能够满足大部分需求,所以特地制作成拓展的方式提供出来希望,能给给为小伙伴...

喵了_个咪
2016/01/05
142
0
Node.js 服务端图片处理利器——sharp 进阶操作指南

Node.js 服务端图片处理利器——sharp 进阶操作指南 sharp 是 Node.js 平台上相当热门的一个图像处理库,其实际上是基于 C 语言编写 的 libvips 库封装而来,因此高性能也成了 sharp 的一大卖...

幸运券发放
05/29
0
0
imagick图片处理

ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附...

嚣张乾坤
2015/10/17
339
1
im4java + imagemagic 搭建一个图片处理服务

imagemagic + im4java 进行图片处理 利用 imagemagic 对图片进行处理,java工程中,使用im4java来操作的api 一、环境 how to install ? 系统,安装之前,需要先安装 包,否则没法处理jpg和p...

小灰灰Blog
2016/10/31
181
0
Java图像缩略图类库--Thumbnailator

Thumbnailator 是一个用来生成图像缩略图的 Java 类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。 支持:图片缩放,区域裁剪,水印,旋转,保持比例。 ...

匿名
2010/10/07
21.2K
3
前端周刊第58期:送你 3 道面试题

破解前端面试系列文章本周出到第 3 篇:如何搞定纸上编程环节,早些时候发布了闭包篇、DOM 篇,感兴趣的同学可以看看,对面试官和求职者都应该有些参考价值,每篇文章下面的讨论也是值得阅读...

王仕军
2017/06/03
0
0
高性能图片服务器--NImg

NImg 是基于ZImg的nodejs实现。 NImg是基于node.js开发的高性能图片服务器,提供图片上传,实时裁剪。图片处理等接口调用。

freeman983
2013/12/07
5.7K
0
OpenGL实现物体动画和视频特效

OpenGL实现视频的水印、滤镜?OpenGL实现视频的剪裁、旋转? 2D/3D物体的 旋转,平移,缩放? OpenGL图片滤镜与视频滤镜? 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方...

shareus
04/24
0
0
xinshengsiyu/picture

#基于openresty和mongo的图片服务 提供类似于七牛图片存储以及裁剪的服务,lua 0基础,还望各位大神们多多指点。 依赖和参考的项目 lua-resty-upload: https://github.com/openresty/lua-resty...

xinshengsiyu
2017/03/16
0
0
Java 借助ImageMagic实现图片编辑服务

Java 借助ImageMagic实现图片编辑服务 java原生对于图片的编辑处理并没有特别友好,而且问题也有不少,那么作为一个java后端,如果要提供图片的编辑服务可以怎么办?也得想办法去支持业务需求...

小灰灰Blog
04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【面试题】盲人坐飞机

有100位乘客乘坐飞机,其中有一位是盲人,每位乘客都按自己的座位号就坐。由于盲人看不见自己的座位号,所以他可能会坐错位置,而自己的座位被占的乘客会随便找个座位就坐。问所有乘客都坐对...

garkey
50分钟前
0
0
谈谈神秘的ES6——(二)ES6的变量

谈谈神秘的ES6——(二)ES6的变量 我们在《零基础入门JavaScript》的时候就说过,在ES5里,变量是有弊端的,我们先来回顾一下。 首先,在ES5中,我们所有的变量都是通过关键字var来定义的。...

JandenMa
今天
1
0
arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
今天
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
1
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部