Nodejs压缩图片方式,使用images压缩上传的图片

本文介绍如何使用npminstall安装images插件,并利用该插件进行图片压缩处理,包括获取图片尺寸、调整图片大小及质量,以及删除临时文件等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载插件

npm install images

或者

npm install --save images

当然也可以使用(用法差不多,不过这个是异步的)

npm install imagemin

用开发工具直接粘贴回车安装
或者
到项目目录下cmd粘贴安装也是一样的
在这里插入图片描述
同样会自动修改package.json,package-lock.json文件

使用实例

var images = require("images");
var fs = require('fs');
function importImg(){
	var tempImg = "D:\\Eclipse\\11.jpg";
    var saveImg = "D:\\Eclipse\\22.jpg";
    var obj = images(tempImg).size();
    images(tempImg).size(obj.width/2,obj.height/2).save(saveImg, {
        quality : 50                    //保存图片到文件,图片质量为50
    });
    var staSync = fs.statSync(saveImg).size;// 压缩后的图片大小
    if((staSync+"").length > 6){// 存储后的图片超过1MB,再重新压缩(上传我限制图片大小10MB)
        images(tempImg).size(obj.width/3,obj.height/3).save(saveImg, {
            quality : 50
        });
    }
    fs.exists(tempImg,function (exist) {
        if(exist){
            fs.unlink(tempImg, function(err) {
                if (err) {
                    console.log("删除临时文件异常")
                }
                console.log("删除临时文件")
            });
        }else{
            console.log("不存在")
        }
    })
    //images.gc();// 回收处理图像内存
}

最关键的部分就是(上面我是获取了原图的宽高除2进行压缩图片,防止比例不正)

 images("D://11.jpg").size(1000,1000).save("D://22.jpg", {
     quality : 50                    //保存图片到文件,图片质量为50
});

说明
获取临时图片宽高进行比例折半后压缩质量为50的图片,如果超过我规定的1MB则重新压缩比例更小的图片,前端页面获取的图片被我限制在10MB,所以我不做其他的压缩判断,压缩完成后下面删除临时文件
其他
获取宽高的也可以使用其他插件
(总之我用gm的时候size找不到,所以被迫找到images自带的宽高)

npm install --save gm

或者

npm install gm -d

获取方式

var gm = require('gm');
gm('img.png').size(function (err, size) {
  if (!err)
    console.log(size.width > size.height ? 'wider' : 'taller than you');
});

mg详情:https://blog.youkuaiyun.com/dreamer2020/article/details/51647885

images使用参考:
https://blog.youkuaiyun.com/baby97/article/details/50606050

https://blog.youkuaiyun.com/shiyangxu/article/details/82019183

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值