node-images用法

2019-08-27  本文已影响0人  江火渔枫

1.本地安装

$ npm install images --save-dev

2.根木录下建入口文件 do.js

var images = require("images");

images("input.jpg")                     //Load image from file 
                                        //加载图像文件
    .size(400)                          //Geometric scaling the image to 400 pixels width
                                        //等比缩放图像到400像素宽
    .draw(images("logo.png"), 10, 10)   //Drawn logo at coordinates (10,10)
                                        //在(10,10)处绘制Logo
    .save("output.jpg", {               //Save the image to a file, with the quality of 50
        quality : 50                    //保存图片到文件,图片质量为50
    });

根目录下放input.jpg、logo.png 文件

3.运行

npm run do.js
运行效果图

4.难度升级 从文件夹中读取文件 并输出到当前目录下

创建存放图片的文件夹 /pre-processing-images

var images = require("images");
var fs = require("fs");     //fs核心模块中提供了一个  fs.readFile方法,来读取指定目录下的文件
var path = require('path');//解析需要遍历的文件夹
var filePath = path.resolve('./pre-processing-images');

//调用文件遍历方法
fileDisplay(filePath);
//文件遍历方法
function fileDisplay(filePath){
    //根据文件路径读取文件,返回文件列表
    fs.readdir(filePath,function(err,files){
        if(err){
            console.warn(err)
        }else{
            //遍历读取到的文件列表
            files.forEach(function(filename){
                console.log(filename);
                //获取当前文件的绝对路径
                var filedir = path.join(filePath, filename);
                //根据文件路径获取文件信息,返回一个fs.Stats对象
                fs.stat(filedir,function(eror, stats){
                    if(eror){
                        console.warn('获取文件stats失败');
                    }else{
                        var isFile = stats.isFile();//是文件
                        var isDir = stats.isDirectory();//是文件夹
                        //是以.jpg结尾的文件
                        if(isFile && /\.jpg$/.test(filename)){
                            console.log(filedir,"是以.jpg结尾的文件");
                 // 读取文件内容
                            images(filedir)                     //Load image from file 
                                //加载图像文件
                                .size(400)                          //Geometric scaling the image to 400 pixels width
                                //等比缩放图像到400像素宽
                                //.draw(images("logo.png"), 10, 10)   //Drawn logo at coordinates (10,10)
                                //在(10,10)处绘制Logo
                                .save(filename, {               //Save the image to a file, with the quality of 50
                                quality : 50                    //保存图片到文件,图片质量为50
                            });
                        }
                        if(isDir){
                            fileDisplay(filedir);//递归,如果是文件夹,就继续遍历该文件夹下面的文件
                        }
                    }
                })
            });
        }
    });
}

5.难度升级 使用nodejs动态创建嵌套文件件 向文件夹内输出文件

var images = require("images");
var fs = require("fs");     //fs核心模块中提供了一个  fs.readFile方法,来读取指定目录下的文件
var path = require('path');//解析需要遍历的文件夹
var filePath = path.resolve('./pre-processing-images');
var distPosition = path.resolve('./dist/images/');

//递归创建目录 异步方法  
function mkdirs(dirname, callback) {  
    fs.exists(dirname, function (exists) {  
        if (exists) {  
            callback();  
        } else {  
            //console.log(path.dirname(dirname));  
            mkdirs(path.dirname(dirname), function () {  
                fs.mkdir(dirname, callback);  
            });  
        }  
    });  
}  

//递归创建目录 同步方法  
function mkdirsSync(dirname) {  
    //console.log(dirname);  
    if (fs.existsSync(dirname)) {  
        return true;  
    } else {  
        if (mkdirsSync(path.dirname(dirname))) {  
            fs.mkdirSync(dirname);  
            return true;  
        }  
    }  
}  



mkdirsSync(distPosition , null);  
// mkdirs( distPosition , function(e) {  
//    console.log("目录创建完毕")  
// });  


//调用文件遍历方法
fileDisplay(filePath);
//文件遍历方法
function fileDisplay(filePath){
    //根据文件路径读取文件,返回文件列表
    fs.readdir(filePath,function(err,files){
        if(err){
            console.warn(err)
        }else{
            //遍历读取到的文件列表
            files.forEach(function(filename){
                console.log(filename);
                //获取当前文件的绝对路径
                var filedir = path.join(filePath, filename);
                //根据文件路径获取文件信息,返回一个fs.Stats对象
                fs.stat(filedir,function(eror, stats){
                    if(eror){
                        console.warn('获取文件stats失败');
                    }else{
                        var isFile = stats.isFile();//是文件
                        var isDir = stats.isDirectory();//是文件夹
                        //是以.jpg结尾的文件
                        if(isFile && /\.jpg$/.test(filename)){
                            console.log(filedir,"是以.jpg结尾的文件");
                 // 读取文件内容
                            images(filedir)                           //Load image from file 
                                //加载图像文件
                                .size(400)                            //Geometric scaling the image to 400 pixels width
                                //等比缩放图像到400像素宽
                                //.draw(images("logo.png"), 10, 10)   //Drawn logo at coordinates (10,10)
                                //在(10,10)处绘制Logo
                                .save(distPosition+'/'+filename, {    //Save the image to a file, with the quality of 50
                                quality : 50                          //保存图片到文件,图片质量为50
                            });
                        }
                        if(isDir){
                            fileDisplay(filedir);//递归,如果是文件夹,就继续遍历该文件夹下面的文件
                        }
                    }
                })
            });
        }
    });
}
递归创建文件夹输出图片
上一篇下一篇

猜你喜欢

热点阅读