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获取本机外网ip的方法
Apr 15 Python
九步学会Python装饰器
May 09 Python
Django实现图片文字同时提交的方法
May 26 Python
Python入门教程之运算符与控制流
Aug 17 Python
快速了解Python相对导入
Jan 12 Python
使用matplotlib画散点图的方法
May 25 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
简单了解python数组的基本操作
Nov 26 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
Python getsizeof()和getsize()区分详解
Nov 20 Python
关于Numpy之repeat、tile的用法总结
Jun 02 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最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
puppeteer库入门初探
2019/01/09 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
Python切片操作实例分析
2018/03/16 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
python列表使用实现名字管理系统
2019/01/30 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
python assert的用处示例详解
2019/04/01 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
Python目录和文件处理总结详解
2019/09/02 Python
Python 操作 MySQL数据库
2020/09/18 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
Java基础面试题
2014/07/19 面试题
大专生工程监理求职信
2013/10/04 职场文书
期末学生评语大全
2014/04/24 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
家庭贫困证明
2014/09/23 职场文书
奖学金个人总结
2015/03/04 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL