码迷,mamicode.com
首页 > 编程语言 > 详细

Python高质量缩放切图

时间:2014-12-10 14:00:11      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   os   使用   sp   on   log   

最近刚接触Python,以迅雷不及掩耳盗铃之势(只是迫不及待)应用到工作中去了
之前用 cmd+photoshop做批量图像处理(缩放切片),在执行效率(速度)上和灵活度上有很大限制,遂转战Python(我对于大语种庞大的类库感到力不从心,喜欢用脚本语言来快速编辑、执行)
真正开始学习Python第一天,我奋战到深夜三点,勉强完成了可以替代先前用“cmd+photoshop快捷批处理”实现的切图工具,执行效率大概是先前的10倍。
为什么说是“勉强”,因为输出图像质量没Photoshop输出的好。
Python图像处理用到PIL(Python Imaging Library),在resize(缩放)的时候会很大程度得降低图像可观性(给我的感觉是部分像素相对位置乱了,没有平滑缩放过渡),看下示例:
 bubuko.com,布布扣   bubuko.com,布布扣   
(左:PS改变图像大小后输出,右:使用PIL的缩放im.resize(size)后输出)
上面可以看到PIL默认缩放后输出的图像有“破损”
今天google到园子中另一位兄弟的一篇随笔里面包含了这个高质量输出的说明

bubuko.com,布布扣
PIL带ANTIALIAS滤镜缩放结果
im.resize(size, Image.ANTIALIAS)

从结果看,基本上可以和PS输出的相匹敌了

速度上,比不带ANTIALIAS滤镜输出的慢了8倍左右,但还是比PS输出快,而且整个程序稳定性和灵活度比CMD+PS快捷批处理来的好。
在这之前我一直以为是最后im.save输出导致图像质量下降的,浪费了不少时间,嗨~~

备注此次练兵涉及的内容:

图像分割
>>> box = (int(left), int(top),int(right),int(bottom))
>>> region = im.crop(box)

图像缩放
>>> im_resized=im.resize(size, Image.ANTIALIAS)

类似dir的方法:glob
>>> path="c:/test"
>>> glob.glob(path+"/*")

还涉及一些os操作
os.path.basename
os.path.isdir
os.path.exists
os.mkdir

Python高质量缩放切图

标签:blog   http   io   ar   os   使用   sp   on   log   

原文地址:http://www.cnblogs.com/hzm112567/p/4155167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!