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 遍历字典时删除元素报异常的问题
Sep 11 Python
Python机器学习之决策树算法实例详解
Dec 06 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
基于tensorflow加载部分层的方法
Jul 26 Python
详解将Django部署到Centos7全攻略
Sep 26 Python
python3实现表白神器
Apr 09 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
Django工程的分层结构详解
Jul 18 Python
python实现统计代码行数的小工具
Sep 19 Python
python随机模块random使用方法详解
Feb 14 Python
Python工程师必考的6个经典面试题
Jun 28 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 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实现读取一个1G的文件大小
2013/08/24 PHP
php创建多级目录的方法
2015/03/24 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
jquery text(),val(),html()方法区别总结
2013/11/04 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
JS实现弹性菜单效果代码
2015/09/07 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
python调用API实现智能回复机器人
2018/04/10 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
项目开发计划书
2014/01/09 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
画展观后感
2015/06/17 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android