概述
这里无损画质压缩图片的原理是什么?
现在手机拍的照片都很大,一张照片至少都在1MB以上,如果照片包含的景色较为丰富,图片都可能突破5MB以上,这里用我拍的一张风景图为例
接着我用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 Plus | 2.25 | 1.06 |
iPhone 6s Plus | 2.20 | 1.04 |
iPhone 5s | 1.08 | 0.39 |
iPhone 5s | 1.21 | 0.45 |
Redmi Note 4 | 1.90 | 0.45 |
这里我们可看出图片压缩后的大小,和拍摄的机型有大关系,同一机型拍摄的图片压缩比例相近,这应该和同一机型的相机配置有关。
以上所有结果都是建立在手机拍摄图片的基础上的,如果是不含有附加信息的图片,这个方法就没有效果了
最后
以上就是高贵睫毛膏为你收集整理的node下实现简单的无损画质的压缩图片的全部内容,希望文章能够帮你解决node下实现简单的无损画质的压缩图片所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复