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

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高质量缩放切图,抗锯齿的更多相关文章

  1. C#剪切生成高质量缩放图片

    /// <summary> /// 高质量缩放图片 /// </summary> /// <param name="OriginFilePath"&g ...

  2. java高质量缩放图片

    可按照比例缩放,也可以指定宽高 import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.image.codec.jpeg.JP ...

  3. java图片高质量缩放类

    import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedI ...

  4. 编写python高质量python代码的59个有效方法

    第1条:确认自己的python版本 第2条:遵循PEP8的风格 1.空格 对于 占据多行的长表达式来说, 除了首行之外的其余各行都应该在通常的缩进级别上再加4个空格. 每行字符数不应该超过79. 2. ...

  5. 【Java】图片高质量缩放类

    package com.test; import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.image.codec.jpeg. ...

  6. 编写高质量代码--改善python程序的建议(七)

    原文发表在我的博客主页,转载请注明出处! 建议三十四:掌握字符串的基本用法 编程有两件事,一件是处理数值,另一件是处理字符串,在商业应用编程来说,处理字符串的代码超过八成,所以需要重点掌握. 首先有个 ...

  7. Effective Python之编写高质量Python代码的59个有效方法

                                                         这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码 ...

  8. 编写高质量代码--改善python程序的建议(六)

    原文发表在我的博客主页,转载请注明出处! 建议二十八:区别对待可变对象和不可变对象 python中一切皆对象,每一个对象都有一个唯一的标识符(id()).类型(type())以及值,对象根据其值能否修 ...

  9. 编写高质量代码--改善python程序的建议(八)

    原文发表在我的博客主页,转载请注明出处! 建议四十一:一般情况下使用ElementTree解析XML python中解析XML文件最广为人知的两个模块是xml.dom.minidom和xml.sax, ...

随机推荐

  1. 面试总结【css篇】- 盒子模型

    题目:谈谈你对CSS盒模型的认识 (1) 基本概念:标准模型+IE模型   (2) 标准模型和IE模型区别 标准模型和IE模型的区别,就是宽度和高度的计算方式不同. 标准模型的宽度指的就是conten ...

  2. 【CF516D】Drazil and Morning Exercise

    题目 首先我们知道,在树上距离一个点最远的点一定是直径的两个端点之一 首先两遍\(\rm dfs\)把直径求出来,定义\(d(u)\)表示点\(u\)距离其最远点的距离,有了直径我们就能求出\(d\) ...

  3. Cookie自动管理

    如果想要对 cookies 干点什么就需要 HTTP Cookie 管理器了. 啥是 cookies 呢.储存在用户本地终端上的数据通常情况下,当用户结束浏览器会话 时,系统将终止所有的 Cookie ...

  4. log4j学习(二) 高并发logback

    logback中常用的appender有ch.qos.logback.core.ConsoleAppender和ch.qos.logback.core.rolling.RollingFileAppen ...

  5. iOS组件化开发-发布私有库

    远程索引库 将远程索引库添关联到本地 pod repo 查看本地已关联仓库源 pod repo add 本地索引库名称 远程索引库仓库地址 pod repo update 索引库名称 pod repo ...

  6. 《构建之法》CH5~6读书笔记 PB16110698 第九周(~5.15)

    这段时间我阅读了<构建之法>的大部分章节,包括个人技能.软件测试.用户体验和需求分析等相关内容.之前的个人作业和结对作业结束后,我们的工作重心终于转向了团队项目,作为团队中前端组的组长,我 ...

  7. 神经网络 (2)- Alexnet Training on MNIST

    文章目录 Win10 Anaconda下配置tensorflow+jupyter notebook环境 AlexNet 识别MNIST Win10 Anaconda下配置tensorflow+jupy ...

  8. vue组件的props

    刚开始学习vue组件的时候经常被 props这个传值搞晕,做个笔记 Vue.component('item', { template: '#item-template', props: { model ...

  9. MySQL安装pdf介绍

    pdf地址:https://files.cnblogs.com/files/pygo/mysql%E5%AE%89%E8%A3%85.pdf

  10. Maven - 深入理解maven构建生命周期和各种plugin插件

    作者:亚当-adam 来源:CSDN 原文:https://blog.csdn.net/zhaojianting/article/details/80321488 版权声明:本文为博主原创文章,转载请 ...