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中的字典遍历备忘
Jan 17 Python
Python 迭代器与生成器实例详解
May 18 Python
图解Python变量与赋值
Apr 03 Python
python计算两个数的百分比方法
Jun 29 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
python可视化实现KNN算法
Oct 16 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
在python image 中实现安装中文字体
May 16 Python
基于python实现百度语音识别和图灵对话
Nov 02 Python
pytorch 中forward 的用法与解释说明
Feb 26 Python
Python基础教程,Python入门教程(超详细)
Jun 24 Python
Python中tqdm的使用和例子
Sep 23 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对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
ExpressJS入门实例
2015/01/14 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
vue多次循环操作示例
2019/02/08 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
火烧圆明园的观后感
2015/06/03 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
导游词之山海关
2019/12/10 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
Python初学者必备的文件读写指南
2021/06/23 Python
python运行脚本文件的三种方法实例
2022/06/25 Python