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实现竖排打印传单手机号码易撕条
Mar 16 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
Python基于TCP实现会聊天的小机器人功能示例
Apr 09 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
基于pycharm导入模块显示不存在的解决方法
Oct 13 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
python3.6数独问题的解决
Jan 21 Python
Djang的model创建的字段和参数详解
Jul 27 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
python如何实现单链表的反转
Feb 10 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
Python文件操作基础流程解析
Mar 19 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中的Cannot modify header information 问题
2013/08/12 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
jquery 图片轮换效果
2010/07/29 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
javascript基本语法
2016/05/31 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
python小技巧之批量抓取美女图片
2014/06/06 Python
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
Python中最大递归深度值的探讨
2019/03/05 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
Win10 安装PyCharm2019.1.1(图文教程)
2019/09/29 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
学习两会精神心得范文
2014/03/17 职场文书
五一劳动节活动记录
2014/03/23 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
体育运动口号
2014/06/09 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript