http://effbot.org/imagingbook/

一、安装

pip install PIL --allow-external PIL --allow-unverified PIL
注:新版pip不支持--allow-external了,但可直接安装
pip install pillow
如报错找不到Python.h,安装python-dev,并将Python.h所在路径加入C_INCLUDE_PATH
 
 
出现“The _imagingft C module is not installed”错误
删除pil后安装字体包再重装pil
centos:
yum install libjpeg-devel
yum install freetype-devel
yum install libpng-devel

ubuntu:
apt-get install libfreetype6-dev
os:
brew install freetype

在ubuntu的virtualenv下用pip不成功,但apt-get python-pil不会出错。

或在vitrualenv下安装pillow代替,可能需要先sudo apt-get install libjpeg8-dev

使用pillow可能出现keyerror:jpeg错误,使用from PIL import Image代替import Image

二、转为二色
 import Image
img=Image.open('o.jpg')
w,h=img.size
img1=Image.new('RGB',(w,h))
for x in range(w):
for y in range(h):
(r,g,b)=img.getpixel((x,y))
if r+g+b>255:
nc=(255,255,255)
else:
nc=(0,0,0)
img1.putpixel((x,y),nc)
img1.save('n.jpg')

转黑白
img.convert('1')

缩放

img.resize(...)

img.thumbnail((new_w, new_h))

旋转

img.rotate(angle)
滤镜

img1 = img.filter(ImageFilter.BLUR)

画图

 import ImageDraw
draw = ImageDraw.Draw(img)
width,height = img.size
draw.line(((0,0),(width-1,height-1)),fill=255) #画直线
draw.line(((0,height-1),(width-1,0)),fill=255)
draw.arc((0,0,width-1,height-1),0,360,fill=255) #画椭圆
img.save(self.save_file)

增强

 import ImageEnhance
brightness = ImageEnhance.Brightness(img)
bright_img = brightness.enhance(2.0) ##亮度增强
bright_img.save(img1)
sharpness = ImageEnhance.Sharpness(img)
sharp_img = sharpness.enhance(7.0) #锐度增强
sharp_img.save(img1)
contrast = ImageEnhance.Contrast(img) #对比度增强
contrast_img = contrast.enhance(2.0)
contrast_img.save(img1)

三、显示

pic是jpg格式的二进制字符串

pic=file.read('1.jpg')

im=Image.open(io.BytesIO(pic)) #StringIO.StringIO(pic)

im.show()

#wx
app = wx.PySimpleApp()
# create a window/frame, no parent, -1 is default ID
# increase the size of the frame for larger images
frame1 = wx.Frame(None, -1, "An image on a panel", size = (400, 300))
bmp=wx.BitmapFromImage(wx.ImageFromStream(StringIO.StringIO(pic)))
wx.StaticBitmap(frame1, -1, bmp, (10, pos), (bmp.GetWidth(), bmp.GetHeight()))
frame1.Show(1)
app.MainLoop()

pil的更多相关文章

  1. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  2. Mac osx 安装PIL出现Some externally hosted files were ignored (use --allow-external PIL to allow).

    出现这个问题Some externally hosted files were ignored (use --allow-external PIL to allow)的主要原因是PIL的一些依赖库还没 ...

  3. 使用Python中PIL图形库进行截屏

    目的:通过使用Python的一个图形库PIL(Python Image Library)对屏幕进行截图 步骤: 1.下载PIL(路径)并安装 2.新建文件“截屏.py”,右键Edit with IDL ...

  4. python PIL比较图片像素

    # -*- coding: utf-8 -*- from PIL import Image from pylab import * def compare_pic_L(pic1,pic2): #打开第 ...

  5. 支付宝AR红包引出Python中的PIL小试

    这两天支付宝AR红包火了,周围的同学全在玩.可是我一直在想这个原理是什么?通过请教大神和思考,知道了它有两个限定条件:GPS地理位置和图片的识别.所以,只要我们有了这两个限定条件,就不难进行该红包的破 ...

  6. 解决win7下PIL无法打开图片的问题

    找到PIL安装文件里的ImageShow.py 把第99行的 return "start /wait %s && del /f %s" % (file, file) ...

  7. python2.7安装PIL.Image模块

    这是大家常用的两种安装方法 sudo pip install PIL pip install PIL --allow-external PIL --allow-unverified PIL 如果安装成 ...

  8. Mac下python初学之Image库(PIL)

    Mac下python 使用Image库 安装PIL,下载http://www.pythonware.com/products/pil/ 解压PIL源码包,阅读README知道需要使用python se ...

  9. PIL中的Image和numpy中的数组array相互转换

    1. PIL image转换成array img = np.asarray(image) 需要注意的是,如果出现read-only错误,并不是转换的错误,一般是你读取的图片的时候,默认选择的是&quo ...

  10. windows下python Tkinner环境布置(包含PIL环境安装)

    布置步骤:1.安装python 2.7.11 安装步骤:由于网上存在有相关经验,所以在此引用一下 http://jingyan.baidu.com/article/0bc808fc42dfab1bd4 ...

随机推荐

  1. IIS7 启用GZip压缩

    GZip压缩通常会达到70%以上的压缩率,如果是手机Web这无疑会使网站的访问速度大大增加,无论是CSS合并.JS合并.图片合并都不如GZip压缩来得简单直接.如果一个网页是100K,那么启用GZip ...

  2. SQL Server提高事务复制效率优化(一)总体概述

      随着公司业务的发展,数据量增长迅速,在解决Scale Out的同时,还要考虑到主从的复制延迟问题,尽量降到1s以内满足线上业务,如果不调整,SQL Server默认的配置可能平均要3s左右.生产的 ...

  3. Broadcom以太网交换芯片培训

      目录 1.交换芯片架构....................................................................................... ...

  4. <读书笔记>软件调试之道 :问题的核心-如何修复缺陷

    声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! 修复缺陷 对于一个好的修复来说,不仅仅是让软件运行正确,还需要为将来奠定基础.一 ...

  5. 通过SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主 ...

  6. 利用循环播放dataurl的视频来防止锁屏:NoSleep.js

    mark下. 地址:http://www.open-open.com/lib/view/open1430796889882.html

  7. java中获取接口(方法)中的参数名字(eclipse设置编译参数)(java8 javac -parameters)

    interface接口参数 jdk1.7及以前使用spring功能实现的: 注意: 1.该功能只能获取类的方法的参数名,不能获取接口的方法的参数名. public static void test() ...

  8. COM中需要调用AddRef和Release的10条规律

    COM中需要调用AddRef和Release的10条规律  

  9. chroot directory

    给 /A/B/C的C目录做chroot,要对C能读写,所以C目录不能做ROOT目录,对B做chroot. 设置C目录所有者为sftp 账户a,组也改为sftp组(这里a和sftp组都是之前建立好的sf ...

  10. HMC破解控制台密码

    一般我们装完HMC以后默认的登录控制台的账户是:admin 密码:abc123当我们可以自创建登录账户后,忘记密码了怎么办? 这里有两种方法: 1 由于HMC是suse系统,基于linux内核的,所以 ...