Python3实现转换Image图片格式


Posted in Python onJune 21, 2018

前言

首先图片格式转换的方法有很多,但是转二进制字节流的,我搜了一下午终于在 stackoverflow上搜到了
说一下为什么要在线转这个图片格式
额,一名Python3 spider, 需求要爬去文章,并且把里面的图片,上传到本公司的七牛云上面,
意思就是,图片不需要下载到本地,爬取到图片url后,读取图片二进制数据,然后上传到自己公司七牛云上面,并且替换其格式(这一点很坑)

上传图片二进制数据到七牛云上面不难, 照着七牛云API文档基本就能行,有一点很坑,七牛云官方文档Python API 贼鸡儿坑,上面的Demo全是,上传本地图片的put_file()方法,我要上传远程服务器上面的,没看到对应的方法。

准备修改qiniu SDK源码的,看到了一个put_data()方法能传二进制数据。

好我写这篇博文重点来了

需求:由于我爬取的图片远程是google的 .webp格式的图片, 链接是https://xxxx.webp这种,而这个格式又不能直接修改后缀改。

于是我去网上搜Python3 图片格式转换的方法。

最多的就是这种方法

from PIL import Image  # 安装pillow 有些小坑 对了我的版本是Pillow==4.3.0
 im = Image.open("./demo1.jpg")
 im.save("./demo2.png")

但是我要上传的文件都不在本地,都是请求图片二进制流在线修改图片后缀。

二话不说直接亮代码吧,亏我找了一下午,还在pillow的github上提问。终于在stackoverflow上搜到了。

import io
from PIL import Image # 注意我的Image版本是pip3 install Pillow==4.3.0
import requests

res = requests.get('http://images.xxx.com/-7c0dc4dbdca3.webp')

byte_stream = io.BytesIO(res.content) # 把请求到的数据转换为Bytes字节流(这样解释不知道对不对,可以参照[廖雪峰](https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431918785710e86a1a120ce04925bae155012c7fc71e000)的教程看一下)

roiImg = Image.open(byte_stream)  # Image打开二进制流Byte字节流数据

imgByteArr = io.BytesIO()   # 创建一个空的Bytes对象

roiImg.save(imgByteArr, format='PNG') # PNG就是图片格式,我试过换成JPG/jpg都不行

imgByteArr = imgByteArr.getvalue()  # 这个就是保存的二进制流

# 下面这一步只是本地测试, 可以直接把imgByteArr,当成参数上传到七牛云
with open("./abc.png", "wb") as f:
  f.write(imgByteArr)

我感觉我这个在线转换的绝对是CSDN第一篇, 搜了一下午,人都搜绝望了。
还是 stackoverflow 好用, 这个链接就是我搜到答案。

今天一上github ,作者回复我了的问题了,https://github.com/python-pillow/Pillow/issues/3192

Python 相关文章推荐
python的绘图工具matplotlib使用实例
Jul 03 Python
Python 模拟购物车的实例讲解
Sep 11 Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 Python
浅析Python四种数据类型
Sep 26 Python
Django中celery执行任务结果的保存方法
Jul 12 Python
python使用配置文件过程详解
Dec 28 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
python实现批量转换图片为黑白
Jun 16 Python
python 19个值得学习的编程技巧
Aug 15 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
如何利用Python 进行边缘检测
Oct 14 Python
python 如何在测试中使用 Mock
Mar 01 Python
python3实现域名查询和whois查询功能
Jun 21 #Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 #Python
详解Python下ftp上传文件linux服务器
Jun 21 #Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 #Python
python实现黑客字幕雨效果
Jun 21 #Python
python实现内存监控系统
Mar 07 #Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 #Python
You might like
php&java(二)
2006/10/09 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
纯javascript版日历控件
2016/11/24 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
动态Axios的配置步骤详解
2018/01/12 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
python时间日期操作方法实例小结
2020/02/06 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
C++和python实现阿姆斯特朗数字查找实例代码
2020/12/07 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
测绘工程个人的自我评价
2013/11/10 职场文书
应征英语教师求职信
2013/11/27 职场文书
中学生获奖感言
2014/02/04 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
优秀护士事迹材料
2014/12/25 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
导游词之镜泊湖
2019/12/09 职场文书