不支持的BMP压缩 - BMP到JPEG - PIL - Python

问题描述 投票:1回答:2

我正在尝试使用以下代码将bmp图像转换为jpeg。

from PIL import Image
img = Image.open('/Desktop/xyz.bmp')
new_img = img.resize( (256, 256) )
new_img.save( '/Desktop/abc.png', 'png')

执行时遇到错误,

Traceback (most recent call last):   File "D:/widowed_hulk/otokar/image_scraper.py", line 80, in <module>
    img = Image.open('C:/Users/santhosh.solomon/Desktop/bmp/ImageHandler.bmp')   File "C:\Python34\lib\site-packages\PIL\Image.py", line 2609, in open
    im = _open_core(fp, filename, prefix)   File "C:\Python34\lib\site-packages\PIL\Image.py", line 2599, in _open_core
    im = factory(fp, filename)   File "C:\Python34\lib\site-packages\PIL\ImageFile.py", line 102, in
__init__
    self._open()   File "C:\Python34\lib\site-packages\PIL\BmpImagePlugin.py", line 201, in
_open
    self._bitmap(offset=offset)   File "C:\Python34\lib\site-packages\PIL\BmpImagePlugin.py", line 161, in
_bitmap
    raise IOError("Unsupported BMP compression (%d)" % file_info['compression']) OSError: Unsupported BMP compression (1)

我试图转换的图像:https://servis.otokar.com.tr:8083/ImageHandler.ashx?id=6425

任何人都可以指导我完成此错误吗?

python image-processing python-imaging-library bmp
2个回答
1
投票

这不是你自己的错。图像采用awkward Microsoft BMP V3格式,我相信RLE压缩,我不相信Pillow可以处理。

您可以使用ImageMagick在终端中重新编写没有压缩的图像,这样你的代码就能正常工作:

convert image.bmp -compress none image.bmp

但是如果你这样做,你也可以使用ImageMagick制作PNG:

convert image.bmp result.png

作为替代方案,如果你想使用Python,你可以尝试一些其他库,例如pyvips - 我会尝试并报告回来。


1
投票

在尝试了许多可能的方法后,我找到了openCV库的解决方案。这不会给我带来任何压缩错误,并像魅力一样处理转换。

import cv2
image = cv2.imread(img)
cv2.imwrite(imag_name.replace('.bmp', '.jpg'), image)

感谢@Mark的建议。因为我必须转换大量的图像和openCV似乎精简版来处理我将使用openCV的问题。

© www.soinside.com 2019 - 2024. All rights reserved.