libpng 警告:不正确的 sBIT 块长度

libpng warning: Incorrect sBIT chunk length

尝试在 OpenCV2 中使用 python 2.7.

显示图像时,标题中提到的警告不断出现

如何消除这种警告?

通过 pngcheck 尝试 运行 您的图像,看看它是否已损坏,或者有什么问题。然后修复你从哪里得到的源。

sBIT指的是有效位chunk 用于传达与特定图像相关的信息。

在您的情况下,主要是您使用的图像的深度存在问题。 sBIT 会针对每种类型的图像进行更改。我所说的图像类型是指:灰度、RGB、带 alpha 的灰度等。

访问 THIS PAGE 并向下滚动到 sBIT 有效位 部分以了解更多信息。

您可以使用 pngcrush 删除 sBIT 块:

pngcrush -rem sbit source.png fixed.png

事实上,你甚至不需要说 -rem sbit 因为 pngcrush 会检测到 sBIT 块无效的事实,并会默默地为你删除它。

您也可以试试 ImageMagick 或 GraphicsMagick

magick source.png fixed.png
gm convert source.png fixed.png

我认为ImageMagick 和GraphicMagick 都不支持写入sBIT 块,因此无论它是否有效,它都会被删除。