python图像质量评价_在Python中确定JPG质量(PIL)

在PIL中(主要是所有使用libjpeg的软件/库),质量设置用于构造量化表(ref.)。在libjpeg中,质量号“缩放”样本表值(来自JPEG规范第K.1节)。在其他的Libraries中,有不同的表分配给不同的质量(例如:Photoshop,数码相机)。

所以,换句话说,质量等于量化表,所以它比一个数字更复杂。

如果要以相同的“质量”保存修改后的图像,只需使用相同的量化表。幸运的是,量化表嵌入在每个JPEG中。不幸的是,在PIL中保存时无法指定量化表。cjpeg,libjpeg附带的命令行实用程序可以做到这一点。

下面是一些使用指定量化表保存jpeg的粗略代码:from subprocess import Popen, PIPE

from PIL import Image, ImageFilter

proc = Popen('%s -sample 1x1 -optimize -progressive -qtables %s -outfile %s' % ('path/to/cjpeg', '/path/ta/qtable', 'out.jpg'), shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)

P = '6'

if im.mode == 'L':

P = '5'

stdout, stderr = proc.communicate('P%s\n%s %s\n255\n%s' % (P, im.size[0], im.size[1], im.tostring()))

您需要找到从原始jpeg中提取量化表的方法。djpeg可以这样做(libjpeg的一部分):djpeg -verbose -verbose image.jpg > /dev/null

您还需要找到并设置采样。关于那张支票的更多信息。你也可以看^{}

更新

我做了一个PIL fork来添加在保存JPEG时指定子采样或量化表或两者的可能性。您还可以在保存时指定quality='keep',图像将使用与原始图像相同的量化表和子采样保存(原始图像需要是JPEG)。还有一些预设(基于PS图象处理软件),保存时可以传递给quality。My fork.

更新2

我的代码现在是Pillow 2.0的一部分。所以你只要:pip install Pillow

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值