玩node-images模块—Node.js轻量级跨平台图像编解码库

  • Post author:
  • Post category:其他


Node.js轻量级跨平台图像编解码库

github:

https://github.com/zhangyuanwei/node-images

Features 功能特性

  • 轻量级:无需安装任何图像处理库。
  • 跨平台:Windows下发布了编译好的.node文件,下载就能用。
  • 方便用:jQuery风格的API,简单可依赖。

我们可以通过这个插件做什么呢,常见的可以加水印,简单的放大缩小压缩处理等。

实例:

//编码图片依赖模块https://github.com/zhangyuanwei/node-images  

var images = require("images");
var fs = require("fs");
var path = require("path");
    
function readFile(src,dst){

    //判断文件需要时间,则必须同步
    if(fs.existsSync(src)){
    
        //读取文件夹
        fs.readdir(src,function(err,files){
            if(err){
                throw err;
            }    

            files.forEach(function(filePath){
                console.log(dst);
                
                //url+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“
                var url = path.join(src,filePath),
                    dest = path.join(dst,filePath);
                fs.stat(url,function(err,stats){
                    if(err)throw err;
                    
                    //是文件
                    if(stats.isFile()){
                        //正则判定是图片
                        if(/.*\.(jpg|png|gif)$/i.test(url)){
                            encoderImage(url,dest);
                        }
                    }else if(stats.isDirectory()){
                        exists(url,dest,readFile);
                    }
                
                })
            });
        
        });
        
        
    }else{
        throw "no files,no such!"
    }
}

//这里处理文件跟复制有点相关,输出要检测文件是否存在,不存在要新建文件
function exists(url,dest,callback){
    fs.exists(dest,function(exists){
        if(exists){
            callback && callback(url,dest);
        }else{
            //第二个参数目录权限 ,默认0777(读写权限)
            fs.mkdir(dest,0777,function(err){
                if (err) throw err;
                callback && callback(url,dest);
            });
        }
    });    
}


function encoderImage(sourceImg,destImg){
    images(sourceImg)     //加载图像文件
        .size(1000)          //等比缩放图像到1000像素宽
        .draw(images("pficon.jpg"),10,10)   //在(10,10)处绘制Logo
        .save(destImg,{
            quality : 50     //保存图片到文件,图片质量为50
        });
}
readFile("./src","./out");

module.exports = readFile;
    
    

转载于:https://www.cnblogs.com/pingfan1990/p/4828072.html