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 实现文件的递归拷贝实现代码
Aug 02 Python
跟老齐学Python之集合的关系
Sep 24 Python
Python实现拼接多张图片的方法
Dec 01 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
Python实现的计算马氏距离算法示例
Apr 03 Python
Python中交换两个元素的实现方法
Jun 29 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 Python
Python xlwings插入Excel图片的实现方法
Feb 26 Python
Python语言中的数据类型-序列
Feb 24 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 常用类汇总 推荐收藏
2010/05/13 PHP
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
js 调整select 位置的函数
2008/02/21 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
python操作MongoDB基础知识
2013/11/01 Python
Python中的异常处理学习笔记
2015/01/28 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
谈谈Python中的while循环语句
2019/03/10 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
Django的models中on_delete参数详解
2019/07/16 Python
python3中eval函数用法使用简介
2019/08/02 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
护士检查书
2014/01/17 职场文书
协议书范本
2014/04/23 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
总经理岗位职责
2015/02/04 职场文书