Python3实现转换Image图片格式

作者:wgPython 时间:2021-06-06 21:04:25 

前言

首先图片格式转换的方法有很多,但是转二进制字节流的,我搜了一下午终于在 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

来源:https://blog.csdn.net/wgPython/article/details/80740067

标签:Python3,Image
0
投稿

猜你喜欢

  • 微信小程序去哪里找 小程序到底如何使用(附小程序名单)

    2024-05-03 15:07:40
  • Python轻松搞定视频剪辑重复性工作问题

    2022-12-18 16:06:54
  • 潜谈产品设计中的可用性和可访问性

    2009-01-18 12:47:00
  • Python实现操纵控制windows注册表的方法分析

    2021-10-30 10:16:33
  • 陌生网页交互行为分析(1)——奇怪的关闭按钮

    2009-01-08 12:22:00
  • Vuex实现简单购物车

    2024-05-08 10:43:45
  • 请不要重复犯我在学习Python和Linux系统上的错误

    2023-05-05 05:01:31
  • Vue Ref全家桶具体用法详解

    2024-04-27 15:49:06
  • php注册登录系统简化版

    2024-04-30 08:48:24
  • 解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)

    2024-06-05 09:15:26
  • Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能

    2024-04-16 09:13:02
  • Bootstrap响应式表格详解

    2023-07-02 05:23:58
  • python同步windows和linux文件

    2023-12-11 11:44:35
  • ASP设计常见问题及解答精要

    2009-04-21 11:16:00
  • 精通Javascript系列之数据类型 字符串

    2024-04-17 09:49:59
  • Python中求对数方法总结

    2023-04-13 22:20:28
  • 用Python代码自动生成文献的IEEE引用格式的实现

    2021-05-26 15:24:49
  • 详解SQL中Group By的用法

    2024-01-28 14:01:32
  • Python获取单个程序CPU使用情况趋势图

    2021-11-19 02:36:59
  • python中类变量与成员变量的使用注意点总结

    2022-01-08 03:39:51
  • asp之家 网络编程 m.aspxhome.com