Convert PIL Image to byte array?

本文介绍如何使用Python从网络URL中加载图片,并将其转换为不同的格式如JPEG或PNG等。文中提供了详细的代码示例,包括处理不同版本的Python以及使用PIL库进行图片操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import io

img = Image.open(fh, mode=‘r’)
roiImg = img.crop(box)

imgByteArr = io.BytesIO()
roiImg.save(imgByteArr, format=‘PNG’)
imgByteArr = imgByteArr.getvalue()
复制代码

复制代码
2.
from PIL import Image
import io

I don’t know what Python version you’re using, so I’ll try using Python 3 first

try:
import urllib.request as urllib
except ImportError:
# You are using Python 2 it turns out
import urllib

def my_func(filename, ext):
# Get the image from the URL
im = Image.open(urllib.urlopen(filename))

fp = io.BytesIO()
format = Image.registered_extensions()['.'+ext]
im.save(fp, format)
return fp.getvalue()

jpg_bin = my_func(“http://p1.pstatp.com/list/300x196/pgc-image/152923179745640a81b1fdc.webp”, “jpg”)
复制代码
复制代码
3.
import io
from PIL import Image # 注意我的Image版本是pip3 install Pillow==4.3.0
import requests

res = requests.get(‘http://images.xxx.com/-7c0dc4dbdca3.webp’, stream=True) # 获取字节流最好加stream这个参数,原因见requests官方文档

byte_stream = io.BytesIO(res.content) # 把请求到的数据转换为Bytes字节流(这样解释不知道对不对,可以参照廖雪峰的教程看一下)

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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值