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学习笔记之os模块使用总结
Nov 03 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
python动态网页批量爬取
Feb 14 Python
Python实现基本线性数据结构
Aug 22 Python
解决python opencv无法显示图片的问题
Oct 28 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
python实现可逆简单的加密算法
Mar 22 Python
python实现共轭梯度法
Jul 03 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
浅谈Python 中的复数问题
May 19 Python
python的html标准库
Apr 29 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
用PHP动态创建Flash动画
2006/10/09 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Python 的描述符 descriptor详解
2016/02/27 Python
python面向对象 反射原理解析
2019/08/12 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
小学教师事迹材料
2014/01/13 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
市场总监岗位职责
2015/02/11 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
Golang二维数组的使用方式
2021/05/28 Golang
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS