我正在从S3桶读取图像,然后调整图像的大小并获得调整大小的图像的numpy数组,称为"a"。我还保存了调整大小的图像并重新打开它,并获得名为"b"的numpy数组。我的问题是为什么a和b不同?
resp = s3.get_object(Bucket=event['bucket'], Key=event['image_keys'][0])
data = resp['Body']
image_as_bytes = io.BytesIO(data.read())
image = Image.open(image_as_bytes).convert('RGB').resize((299, 299),Image.NEAREST)
a = np.asarray(image)
image.save('IMAGE_58990004_110132026B_13d64039_resized_lambda.jpg')
b = np.asarray(Image.open('IMAGE_58990004_110132026B_13d64039_resized_lambda.jpg'))
做".save"改变numpy数组?
假设image.save(...)
使用文件名结尾(.jpg
)来选择文件格式(我不知道它是否这样做)。但这似乎是合理的),然后你保存为JPEG文件,JPEG压缩算法是有损的,也就是说,它丢弃一些信息,使文件更小。
尝试使用无损压缩的文件格式,如PNG。