使用PIL图像读取jpg文件相当于什么?
What is the equivalent of reading a jpg file using PIL image?
使用 python 3.10.
我的问题是我将 jpg 文件读取为二进制文件,并得到一个字节数组。
我有以下代码:
from PIL import Image
def get_image_bytes_from_file(filename: str):
with open(filename, "rb") as f:
image_read = f.read()
return image_read
input_file = './image.jpg'
image = Image.open(input_file)
pil_bytes = image.tobytes()
normal_read_bytes = get_image_bytes_from_file(input_file)
print('hi')
我需要对 pil_bytes
进行什么调用才能等于 normal_read_bytesenter code here
我该怎么做?
当你这样做时:
with open('image.jpg', "rb") as f:
JPEG = f.read()
您名为 JPEG
的变量将包含完整的 JPEG 图像:
- a 图像开始 标记,SOI (0xFF 0xD8)
- 一个APP0标记,(0xFF 0xE0)带有JFIF版本和水平和垂直dpi
- 量化表和霍夫曼表
- 可能是带有 GPS 纬度、经度、相机品牌、相机型号、照片日期等的 EXIF 数据
- a 帧开始 标记,SOF0,每像素位数,图像宽度和高度,通道数,采样因子
- JPEG-compressed 像素
- EOI,图像结束 标记 (0xFF 0xD9)
这是一个完整的 JPEG-encoded 压缩图像,带有一堆元数据。
执行此操作时,PIL 会将 JPEG 数据解压缩为完全展开的 in-memory 表示形式,准备好进行处理:
im = Image.open('image.jpg')
pixels = im.tobytes()
您的变量 pixels
将仅包含图像的 未压缩像素 ,从图像的 top-left 开始按 RGB 顺序排列。没有 EXIF 数据、没有日期、没有 GPS、没有评论、没有相机品牌、没有相机型号或镜头数据。它将始终具有完整的未压缩大小:
height in pixels * width width in pixels * 3 bytes
因此,如果您的图像的顶行是白色,它将开始:
0xFF 0xFF 0xFF 0xFF ...
纯像素数据
希望您现在可以看出两者之间的区别,那么您想做什么...
使用 python 3.10.
我的问题是我将 jpg 文件读取为二进制文件,并得到一个字节数组。 我有以下代码:
from PIL import Image
def get_image_bytes_from_file(filename: str):
with open(filename, "rb") as f:
image_read = f.read()
return image_read
input_file = './image.jpg'
image = Image.open(input_file)
pil_bytes = image.tobytes()
normal_read_bytes = get_image_bytes_from_file(input_file)
print('hi')
我需要对 pil_bytes
进行什么调用才能等于 normal_read_bytesenter code here
我该怎么做?
当你这样做时:
with open('image.jpg', "rb") as f:
JPEG = f.read()
您名为 JPEG
的变量将包含完整的 JPEG 图像:
- a 图像开始 标记,SOI (0xFF 0xD8)
- 一个APP0标记,(0xFF 0xE0)带有JFIF版本和水平和垂直dpi
- 量化表和霍夫曼表
- 可能是带有 GPS 纬度、经度、相机品牌、相机型号、照片日期等的 EXIF 数据
- a 帧开始 标记,SOF0,每像素位数,图像宽度和高度,通道数,采样因子
- JPEG-compressed 像素
- EOI,图像结束 标记 (0xFF 0xD9)
这是一个完整的 JPEG-encoded 压缩图像,带有一堆元数据。
执行此操作时,PIL 会将 JPEG 数据解压缩为完全展开的 in-memory 表示形式,准备好进行处理:
im = Image.open('image.jpg')
pixels = im.tobytes()
您的变量 pixels
将仅包含图像的 未压缩像素 ,从图像的 top-left 开始按 RGB 顺序排列。没有 EXIF 数据、没有日期、没有 GPS、没有评论、没有相机品牌、没有相机型号或镜头数据。它将始终具有完整的未压缩大小:
height in pixels * width width in pixels * 3 bytes
因此,如果您的图像的顶行是白色,它将开始:
0xFF 0xFF 0xFF 0xFF ...
纯像素数据
希望您现在可以看出两者之间的区别,那么您想做什么...