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网络编程之TCP通信实例和socketserver框架使用例子
Apr 25 Python
Python Tkinter简单布局实例教程
Sep 03 Python
python实现数组插入新元素的方法
May 22 Python
python实现微信自动回复功能
Apr 11 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
Python实现Canny及Hough算法代码实例解析
Aug 06 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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生成月历代码
2007/06/14 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
小学生家长评语大全
2014/02/10 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
泰山导游词
2015/02/02 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python