最近工作中需要用到图片的自动化处理,于是了解了一下PIL程序库。

什么是PIL

PIL(Python Imaging Library)是python中处理图像常用的一个库,常见的用法包括可以操作二维像素点、线、文字以及对现有图片的缩放、变形、通道处理,也可以转换图片的编码格式,可以比较两幅图片的不同。

安装

python中安装库一般通过pip或者easy_install,如果这两者不可行,一般在搜索引擎找到官网或者github项目地址,进入主目录执行python setup.py install。PIL安装方式亦如上所述。

使用场景

基本操作:打开,打印文件属性和展示图片

>>> import Image

>>> im = Image.open("lena.ppm")

>>> print im.format, im.size, im.mode

PPM (512, 512) RGB

>>> im.show()

其中format包括jpg,png,gif,bmp等

size很好理解,返回的是一个二元组代表宽高

mode代表的是色彩模式,除了RGB,共支持如下模式

1 (1-bit pixels, black and white, stored with one pixel per byte)

L (8-bit pixels, black and white)

P (8-bit pixels, mapped to any other mode using a colour palette)

RGB (3x8-bit pixels, true colour)

RGBA (4x8-bit pixels, true colour with transparency mask)

CMYK (4x8-bit pixels, colour separation)

YCbCr (3x8-bit pixels, colour video format)

I (32-bit signed integer pixels)

F (32-bit floating point pixels)

图片缩放:

size = (128, 128)

im = Image.open(infile)

im.thumbnail(size)

经过测试,缩放是会保留原始长宽比的,缩放操作其实意味着在保留长宽比的前提下,缩放后结果的高不大于128,宽也不大于128.

缩放时还有一个filter参数,可以控制图片的质量,压缩时PIL处理过程中称为resampling的过程,可以采用以下filter:

- NEAREST

Pick the nearest pixel from the input image. Ignore all other input pixels.

直接采用该像素点最近的像素点的色彩值

- BILINEAR

Use linear interpolation over a 2x2 environment in the input image. Note that in the current version of PIL, this filter uses a fixed input environment when downsampling.

类似第一种,只不过扩大了采样的范围并作平均。是2*2的范围

- BICUBIC

Use cubic interpolation over a 4x4 environment in the input image. Note that in the current version of PIL, this filter uses a fixed input environment when downsampling.

进一步扩大到了4*4的范围

- ANTIALIAS

(New in PIL 1.1.3). Calculate the output pixel value using a high-quality resampling filter (a truncated sinc) on all pixels that may contribute to the output value. In the current version of PIL, this filter can only be used with the resize and thumbnail methods.

看不太懂,反正这个是推荐的,官方认为只要不是对速度有非常大的要求,都要采用这个filter。

通过实际操作,确实发现第四种明显减少了锯齿,而第一种nearest锯齿最为严重

对比ANTIALIAS vs NEAREST

图片转换:

im = Image.open(“a.png")

im.save(“a.jpg”)

PIL默认会读取后缀名来应该用何种编码来转换这张图片。

图片粘贴:

width = 850

height = 510

im = Image.open(“for_paste.jpg")

image = Image.new('RGB', (width, height), (255, 255, 255))

box = (250,42,550,325)

image.paste(im,box)

代码首先新建了一个image对象,作为我们的画布,然后将for_paster.jpg粘贴到画面中的区域。box是一个四元组,含义为(左上角x,左上角y,右下角x,右下角y)。这里如果box的宽和高与被粘贴图片的宽高不一致,系统会抛异常。

图片中写字:

#创建一个字体实例,采用微软雅黑38号

font_en = ImageFont.truetype('/Library/Fonts/Microsoft/Microsoft Yahei.ttf',38)

draw = ImageDraw.Draw(image)

#指定字体和颜色(RGB)

draw.text( (0,100), u’He acknowledged his faults.', font=font_en,fill=(0,0,0))

del draw

结果如下:

Python画图

用python画图需要什么插件_PIL(Python Imaging Library)-用Python画图相关推荐

  1. c4d脚本python教程_C4D脚本插件编写入门视频教程Intro to Python Scripting | C4DSKY

    C4D脚本插件编写入门视频教程Intro to Python Scripting in Cinema 4d 在这期视频教程中,作者来自Brograph Tuts,讲解了脚本日志和脚本管理器的使用,如何 ...

  2. python代替excel的插件_作者推荐:用 Python 替代Excel 表格,轻而易举实现办公自动化...

    过去,在很多金融.市场.行政的招聘中,面试官都会问一句:"你精通 EXCEL 吗?" 但今天,他们可能更喜欢问:"你会 Python 吗?" 越来越多的企业开始 ...

  3. 如何用python写html的插件,使用python开发vim插件及心得分享

    如何使vim下开发python调试更方便 如何用 Python 给 Vim 写插件 如何使 Vim 下开发 Python 调试更方便 怎么用python调用matlab? 打算用vim写Python ...

  4. 【Python】安装PIL (Python Imaging Library )

    安装成功PIL,并非指令pip install PIL,而是pip install Pillow 以下转自原博文: python 安装PIL (Python Imaging Library ) 提示 ...

  5. python中的画布背景设置_教你用python画图—Turtle详细教程

    Turtle模块绝对是吸引非专业代码开发者人员学习python入门的好工具 通过turtle几行代码的执行软件就会画出漂亮的图形,美观而且有成就感,这样一下子对python编程就产生了兴趣. 这些漂亮 ...

  6. python安装插件报错原因_Sublime Text3 python自动补全问题——Sublime Text3安装Anaconda插件...

    学习python的时候 在编辑器的选择上会有很多选择,我最终还是选择了sublime text3. 相对于其他编辑器,sublime text有以下特性: 插件多,类似GoSublime,Emmet信 ...

  7. vim python补全_转:VIM python 自动补全插件:pydiction

    这是一个相当不错的 Python 代码自动完成的脚本. 可以实现下面python代码的自动补全: 简单python关键词补全 python 函数补全带括号 python 模块补全 python 模块内 ...

  8. python绘制横向柱状图 妈妈再也不用担心我不会画图了

    python绘制横向柱状图 妈妈再也不用担心我不会画图了 前言 实现代码 成果 前言 事情要从一次画图开始说起 当我开开心心搞到一堆数据,以为能够休息的时候,这时候我突然想起来,是不是绘制成柱状图更直 ...

  9. python需要下载哪些插件,python需要安装的软件

    python中用到哪些软件 一.Python代码编辑器1.sublime Textsublime Text是一款非常流行的代码编辑器,支持Python代码编辑,同时兼容所有平台,并且丰富的插件扩展了语 ...

最新文章

  1. Spring Boot(五):spring data jpa的使用
  2. 基于FPGA的AM信号调制与解调详细步骤
  3. 我的世界服务器被无限循环怎么办,我的世界怎么制作无限循环装置_我的世界无限循环装置制作方法_游戏堡...
  4. c语言二次函数拟合,二次函数拟合算法
  5. 打开输入花里胡哨的特殊符号
  6. 修改HBase的rowkey设计把应用的QPS从5W提升到50W
  7. 盘点填报功能的9大应用场景,解决填报难题(附模板)
  8. Visual Studio 2010 实用功能总结
  9. html - html5 audio 音乐自动播放,循环播放等9款播放器
  10. 字体大宝库:15款漂亮的艺术字体免费下载
  11. 软件的高可用性、可扩展性和高性能
  12. vue关闭浏览器退出登录
  13. 苹果系统更新不了怎么办_iphone/ipad更新系统失败后怎么办?
  14. php 开源报表工具,PHP制作炫目的图表 PHP报表制作方法介绍
  15. 手机便签软件哪个好用?哪种手机便签软件好使用
  16. Axure RP-产品原型设计工具使用
  17. 深圳招银java社招都有hr面吗,深圳招银网络科技
  18. 般若波罗蜜多心经——背过最好了
  19. ofo广州也免押金了!免押金成共享单车大战的杀手锏
  20. 【数据库】关系数据模型

热门文章

  1. 国内发布首款骁龙笔记本,然过高的定价难打开市场
  2. 一款开源网络转发、代理软件,解决跨网通信问题
  3. 华为云大数据BI 解决方案的超高性价比
  4. 别着急开发APP,先带你了解现在的APP开发市场
  5. Windows用户层技术工具与源码分享
  6. 怎么把录音转文字?手把手教你转换
  7. 南京邮电大学C++实验报告3(仅供参考)
  8. 融云RongIMKit即时通讯开发(让我们聊起来)
  9. 最简理解空间三角形中线与边的交点
  10. Linux之shell注释