Python 以“字节”为单位的图像 - 获取高度、宽度
Python image in `bytes` - get height, width
我试图在将图像保存到数据库和 S3 之前检测图像的 width
和 height
。图片在 bytes
.
这是保存到 Django
之前的图像示例 ImageField
:
注意:我不想使用 ImageField
s height_field
和 width_field
,因为由于某种原因它会极大地降低服务器速度,所以我想手动进行。
图像是使用请求下载的:
def download_image(url):
r = requests.get(url, stream=True)
r.raw.decode_content = True
return r.content
要从二进制字符串中获取图像的 width/height,您必须尝试使用图像库解析二进制字符串。这项工作最简单的一个是 pillow
.
import requests
from PIL import Image
import io
def download_image(url):
r = requests.get(url, stream=True)
r.raw.decode_content = True
return r.content
image_url = "https://picsum.photos/seed/picsum/300/200"
image_data = download_image(image_url)
image = Image.open(io.BytesIO(image_data))
width = image.width
height = image.height
print(f'width: {width}, height: {height}')
width: 300, height: 200
我试图在将图像保存到数据库和 S3 之前检测图像的 width
和 height
。图片在 bytes
.
这是保存到 Django
之前的图像示例 ImageField
:
注意:我不想使用 ImageField
s height_field
和 width_field
,因为由于某种原因它会极大地降低服务器速度,所以我想手动进行。
图像是使用请求下载的:
def download_image(url):
r = requests.get(url, stream=True)
r.raw.decode_content = True
return r.content
要从二进制字符串中获取图像的 width/height,您必须尝试使用图像库解析二进制字符串。这项工作最简单的一个是 pillow
.
import requests
from PIL import Image
import io
def download_image(url):
r = requests.get(url, stream=True)
r.raw.decode_content = True
return r.content
image_url = "https://picsum.photos/seed/picsum/300/200"
image_data = download_image(image_url)
image = Image.open(io.BytesIO(image_data))
width = image.width
height = image.height
print(f'width: {width}, height: {height}')
width: 300, height: 200