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. 登录框密码框input框禁止复制、粘贴、剪切和右键功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. maven导入本地jar包

    <dependency> <groupId>com.qrcode</groupId> <artifactId>qrcode</artifactId ...

  3. android开发--sqlite数据库

    一.SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQL ...

  4. java学习第15天(Linklist Vector)

    根据集合的分类(上一天有说),首先接触的是ArrayList但是和Collection一样,他没有什么特殊的功能,直接跳过,然后是Vector. 一   Vector A:有特有功能 a:添加 pub ...

  5. CoIDE在STM32系列单片机中的使用实践

    这一段时间找到CoIDE,发现其真的挺好用,编辑界面比Keil功能强大.因此把实际操作过程记录下来. CoIDE  是CooCox专业打造的一款免费的ARMCortexMCU嵌入式集成开发环境(Int ...

  6. IE8下标签float导致的bug。

    前几天帮朋友写一个页面,今天在IE8下面发现一个很奇葩的问题,给a标签添加了float:left之后a标签内的图片不显示了,去掉float:left之后就能正常显示. 代码: <!DOCTYPE ...

  7. EUI 自动滚动的聊天文本

    一 自动滚动的聊天文本 当文本输入改变时,将scrollV值等于maxScrollV值. private scrollLabel:eui.Label; egret.Tween.).call(()=&g ...

  8. PHP在linux上执行外部命令

    PHP在linux上执行外部命令 一.PHP中调用外部命令介绍二.关于安全问题三.关于超时问题四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍在PHP中调用外部命令,可以 ...

  9. mysql ERROR 1062: ALTER TABLE causes auto_increment resequen

    当我用Navicat尝试修改已有记录的mysql数据表的主键为自动增长时,报出以下错误 1602 ALTER TABLE causes auto_increment resequencing, res ...

  10. win8.1 64位安装DEV C++

    1.首先下载64位版本的DEV C++ http://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/ 2.采取默认安装即可, ...