【发布时间】:2016-06-30 05:06:19
【问题描述】:
我似乎在 scipy.misc.imread 中遇到了一个错误,我正在寻找解决方法。这是错误报告的片段:
from scipy.misc import imread
im = imread('380.bmp')
...
C:\Anaconda3\lib\site-packages\PIL\BmpImagePlugin.py in _bitmap(self, header, offset)
145 raw_mode = MASK_MODES[(file_info['bits'], file_info['rgb_mask'])]
146 else:
--> 147 raise IOError("Unsupported BMP bitfields layout")
148 else:
149 raise IOError("Unsupported BMP bitfields layout")
OSError: Unsupported BMP bitfields layout
我可以在图像查看器中毫无问题地打开图像,所以我确定它没有损坏。
主要问题是:imread 的最佳替代方案是什么,以便我可以解决这个问题?或者,如果您知道修复 imread 的方法,那也很好。
顺便说一句,我在 Anaconda 2.4.1(64 位)中使用 Python 3.5.1
【问题讨论】:
-
您可以在命令行中运行 ImageMagick,使用此命令
convert StupidBrokenPieceOfMicrosoftJunk.bmp sensible.png将损坏的 BMP 文件转换为更漂亮的 PNG -
只是为了确认 ImageMagick 为您转换它没有问题 - 我测试了它。如果您有很多不满意的 BMP 文件,您可以运行
mogrify -format png *.bmp,这将在您当前目录中生成所有 BMP 文件的 PNG 格式副本 - 我想您可以在 Python 启动脚本中执行此操作。 -
@MarkSetchell 感谢您的提示。 mogrification 实际上是我最终要做的(我有几百个 bmps 可以使用)。这是一个很好的解决方法,但我希望这个问题能引起 pylab 人的注意......
-
我很高兴 - 很高兴它为你解决了。祝你的项目好运!