首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >枕头不能像gamma一样预留PNG信息?

枕头不能像gamma一样预留PNG信息?
EN

Stack Overflow用户
提问于 2020-06-15 05:53:59
回答 1查看 213关注 0票数 1

我目前还没有一个示例图像,但基本上,如果我遇到这样一种情况,即图像加载后保存,而不做任何修改,则会改变亮度。我读到一个问题,这可能是因为图像使用CMYK模式,但图像是以RGB模式打开的。(我使用的是PNG图像,同样是使用ffmpeg从视频中提取的帧)打开并保存图像后,它的大小从1.6MB增加到1.2MB。快速示例代码:

代码语言:javascript
复制
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属性,我发现原始文件包含此信息:

代码语言:javascript
复制
{'aspect': (1, 1), 'chromaticity': (0.3127, 0.329, 0.64, 0.33, 0.3, 0.6, 0.15, 0.06), 'gamma': 0.50994}

保存的图像则不会。令人惊讶的枕头实际上并没有将这些信息保存在新的图片中,我正在寻找一种方法来绕过它。另一个SO建议没有奏效:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 19:15:27

我不知道为什么PIL/Pillow不能保存/保存你的伽马信息,但你也许可以用pngcheckpngcrush解决这个问题。

您可以使用以下命令获取gAMA块:

代码语言:javascript
复制
pngcheck -v sonic.png | grep gAMA
chunk gAMA at offset 0x00066, length 4: 0.50994

在PIL丢失后,您可以将其设置为0.9:

代码语言:javascript
复制
pngcrush -replace_gamma 0.9 INPUT.PNG OUTPUT.PNG
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62378674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档