我目前还没有一个示例图像,但基本上,如果我遇到这样一种情况,即图像加载后保存,而不做任何修改,则会改变亮度。我读到一个问题,这可能是因为图像使用CMYK模式,但图像是以RGB模式打开的。(我使用的是PNG图像,同样是使用ffmpeg从视频中提取的帧)打开并保存图像后,它的大小从1.6MB增加到1.2MB。快速示例代码:
from PIL import Image # Version 7.1.2
img = Image.open('.\\temp\\original.png')
print(img2.mode) # RGB
img.save('.\\temp\\test.png') # This is darker than original使用img.info属性,我发现原始文件包含此信息:
{'aspect': (1, 1), 'chromaticity': (0.3127, 0.329, 0.64, 0.33, 0.3, 0.6, 0.15, 0.06), 'gamma': 0.50994}保存的图像则不会。令人惊讶的枕头实际上并没有将这些信息保存在新的图片中,我正在寻找一种方法来绕过它。另一个SO建议没有奏效:
from PIL import Image
img = Image.open('1.png')
png_info = img.info
img.save('2.png', **png_info)根据文档,.save()似乎不支持添加此信息,我正在寻找一种绕过它的方法,理想情况下,它仍然可以让我轻松地将图像转换为RGB Pytorch张量。(然后再回来。)
更新:链接到发生此问题的示例图像:打开并保存它将使其变暗。
https://mega.nz/file/0AYwAQRJ#MrhtkDKN-EGj25eld2SrZO0GPrMDQlaz7rtVaQ-GtXs
发布于 2020-06-15 19:15:27
我不知道为什么PIL/Pillow不能保存/保存你的伽马信息,但你也许可以用pngcheck和pngcrush解决这个问题。
您可以使用以下命令获取gAMA块:
pngcheck -v sonic.png | grep gAMA
chunk gAMA at offset 0x00066, length 4: 0.50994在PIL丢失后,您可以将其设置为0.9:
pngcrush -replace_gamma 0.9 INPUT.PNG OUTPUT.PNGhttps://stackoverflow.com/questions/62378674
复制相似问题