最近刚接触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. React:styled-components

    ``是es6的Template Literals(模版字符串),许多人对这个一知半解,今天在这边总结下: `${expression}`(表达式插补) var x; var y; sth.innerH ...

  2. Docker搭建Portainer可视化界面

    为了解决上回说到的问题,在网上找了找 找到了一个 非常有好的可视化界面管理工具. Portainer 是什么东西 (开源轻量级) Portainer是Docker的图形化管理工具,提供状态显示面板.应 ...

  3. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问 (也就是跨数据库访问出错)

    delphi ado 跨数据库访问 语句如下 ' and db = '帐套1' 报错内容是:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATE ...

  4. scrapy的使用-Request

    Request对象在我们写爬虫,爬取一页的数据需要重新发送一个请求的时候调用.这个类需要传递一些参数.其中比较常用的参数有: 1.url    请求的url对象 2.callback  在下载器下载完 ...

  5. lucene入门-搜索方式

    1 package com.home.utils; import java.util.ArrayList; import java.util.List; import org.apache.lucen ...

  6. gulp 压缩 uglify报错GulpUglifyError: unable to minify JavaScript

    引:https://www.cnblogs.com/vellemo/p/6898125.html 在压缩的时候报错:GulpUglifyError: unable to minify JavaScri ...

  7. x25, PF_X25 - ITU-T X.25 / ISO-8208 协议接口。

    总览 #include <sys/socket.h> #include <linux/x25.h> x25_socket = socket(PF_X25, SOCK_SEQPA ...

  8. vba增删改查数据库

    你在EXCEL中增加一个列名为ID,后在VBA中写以下代码,并引用Microsoft ActiveX Data Objects 2.8后执行Public Sub 写入SQL2008()Dim cnn ...

  9. not registered via @EnableConfigurationProperties or marked as Spring component

    利用@ConfigurationProperties(prefix = "")来绑定属性时报错: not registered via @EnableConfigurationPr ...

  10. leetcode-63-不同路径②

    题目描述: 第一次提交: class Solution: def uniquePathsWithObstacles(self, obstacleGrid) : m = len(obstacleGrid ...