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模塊,首先是安裝:

QQ截圖20150910164315

先要安裝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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM