我是靠谱客的博主 高贵睫毛膏,最近开发中收集的这篇文章主要介绍node下实现简单的无损画质的压缩图片,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这里无损画质压缩图片的原理是什么?

现在手机拍的照片都很大,一张照片至少都在1MB以上,如果照片包含的景色较为丰富,图片都可能突破5MB以上,这里用我拍的一张风景图为例

demo图片
接着我用win10自带的图片工具打开看看这张图片,然后右击鼠标,点击“文件信息”


这时你会发现这张图片包含了很多除文件本身属性信息以外的信息,包括快照、ISO、拍摄设备,定位等。所以平时手机拍摄的照片不要随便发给别人,里面包含了很多你的个人信息 。知道了这些,我们假设,如果我们把上传到服务器的图片中包含的这些信息去除,那么图片的存储大小会减少。node实现的图片上传部分可以查看我的另一篇博客

这里使用node的去调用python的PIL库
from PIL import Image
import glob
import os
import sys

def thumb_pic(path,thumb_path):
    try:
        path = unicode(path,'utf8')
        thumb_path = unicode(thumb_path,'utf8')
        im = Image.open(path)
        o_width = im.size[0]
        o_height = im.size[1]
        im.resize(im.size,Image.ANTIALIAS)
        #这里重定义尺寸用的是原图尺寸,所以图片画质并未下降
        im.save(path)
        thumb_width = 400
        size = (thumb_width, o_height * thumb_width / o_width)
        print(size)
        im.thumbnail(size)
        im.save(thumb_path)

    except IOError:
         print(IOError.strerror)
thumb_pic(sys.argv[1],sys.argv[2]);
现在我们上传那一张测试图片试试

上传完成后,我们再用win10的图片工具查看
这里写图片描述

你发现了什么,去除这些信息后,图片居然从7.34MB降到了2.7MB,存储大小较少了接近3倍。我们继续试试其他图片测试结果如下

拍摄机型原图大小(MB)压缩后(MB)
iPhone 6s Plus2.251.06
iPhone 6s Plus2.201.04
iPhone 5s1.080.39
iPhone 5s1.210.45
Redmi Note 41.900.45

这里我们可看出图片压缩后的大小,和拍摄的机型有大关系,同一机型拍摄的图片压缩比例相近,这应该和同一机型的相机配置有关。
以上所有结果都是建立在手机拍摄图片的基础上的,如果是不含有附加信息的图片,这个方法就没有效果了

最后

以上就是高贵睫毛膏为你收集整理的node下实现简单的无损画质的压缩图片的全部内容,希望文章能够帮你解决node下实现简单的无损画质的压缩图片所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部