python使用Image处理图片常用技巧分析


Posted in Python onJune 01, 2015

本文实例讲述了python使用Image处理图片常用技巧。分享给大家供大家参考。具体分析如下:

使用python来处理图片是非常方便的,下面提供一小段python处理图片的代码,需要安装图像处理工具包PIL(Python Image Library)。

#coding=utf-8
import Image
import urllib2
import StringIO
import os
#改变图片大小
def resize_img(img_path):
  try:
    img = Image.open(img_path)
    (width,height) = img.size
    new_width = 200
    new_height = height * new_width / width
    out = img.resize((new_width,new_height),Image.ANTIALIAS)
    ext = os.path.splitext(img_path)[1]
    new_file_name = '%s%s' %('small',ext)
    out.save(new_file_name,quality=95)
  except Exception,e:
    print e
#改变图片类型
def change_img_type(img_path):
  try:
    img = Image.open(img_path)
    img.save('new_type.png')
  except Exception,e:
    print e
#处理远程图片
def handle_remote_img(img_url):
  try:
    request = urllib2.Request(img_url)
    img_data = urllib2.urlopen(request).read()
    img_buffer = StringIO.StringIO(img_data)
    img = Image.open(img_buffer)
    img.save('remote.jpg')
    (width,height) = img.size
    out = img.resize((200,height * 200 / width),Image.ANTIALIAS)
    out.save('remote_small.jpg')
  except Exception,e:
    print e
if __name__ == '__main__':
  img_path = 'test.jpg'
  resize_img(img_path)
  change_img_type(img_path)
  img_url = 'http://img.hb.aicdn.com/042f8a4a70239f724ff7b9fa0fc8edf18658f41022ada-WcItWE_fw554'
  handle_remote_img(img_url)

可能会遇到的问题

ImportError: No module named Image

解决办法:安装Python Imaging Library(PIL)

sudo easy_install PIL

安装PIL出现:
— JPEG support not available

— ZLIB (PNG/ZIP) support not available

— FREETYPE2 support not available

操作jpeg图片和png图片出现:

IOError: decoder jpeg not available 和 IOError: encoder zip not available

解决办法:
(1) 删除已经安装的PIL

sudo rm -rf /usr/local/lib/python2.6/site-packages/PIL-1.1.7-py2.6-linux-x86_64.egg/

(2) 安装相关库
sudo apt-get install libjpeg8 libjpeg62-dev libfreetype6 libfreetype6-dev

sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/

sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/

sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/

(3) 重新安装PIL
sudo easy_install PIL

终端出现:

— JPEG support available
— ZLIB (PNG/ZIP) support available
— FREETYPE2 support available

现在试试,已经ok了

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python列表推导式与生成器表达式用法示例
Feb 08 Python
Python实现简单http服务器
Apr 12 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
python之django母板页面的使用
Jul 03 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
python实现AES加密和解密
Mar 27 Python
对Django 转发和重定向的实例详解
Aug 06 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
Python 防止死锁的方法
Jul 29 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
python实现图片变亮或者变暗的方法
Jun 01 #Python
wxPython中listbox用法实例详解
Jun 01 #Python
在Python的Django框架下使用django-tagging的教程
May 30 #Python
使用url_helper简化Python中Django框架的url配置教程
May 30 #Python
在Python的Django框架中simple-todo工具的简单使用
May 30 #Python
Python中Django框架下的staticfiles使用简介
May 30 #Python
简单介绍Python的Django框架的dj-scaffold项目
May 30 #Python
You might like
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
php文件系统处理方法小结
2016/05/23 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
JavaScript 学习技巧
2010/02/17 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
node thread.sleep实现示例
2018/06/20 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
python pygame实现球球大作战
2019/11/25 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
学习Python需要哪些工具
2020/09/04 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
python实现银行账户系统
2021/02/22 Python
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
网络方面基础面试题
2012/11/16 面试题
软件测试企业面试试卷
2016/07/13 面试题
小学英语教师先进事迹
2014/05/28 职场文书
小学六年级毕业感言
2015/07/30 职场文书
golang定时器
2022/04/14 Golang