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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不支持的BMP压缩 - BMP到JPEG - PIL - Python相关的知识,希望对你有一定的参考价值。

我正在尝试使用以下代码将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:Python34libsite-packagesPILImage.py", line 2609, in open
    im = _open_core(fp, filename, prefix)   File "C:Python34libsite-packagesPILImage.py", line 2599, in _open_core
    im = factory(fp, filename)   File "C:Python34libsite-packagesPILImageFile.py", line 102, in
__init__
    self._open()   File "C:Python34libsite-packagesPILBmpImagePlugin.py", line 201, in
_open
    self._bitmap(offset=offset)   File "C:Python34libsite-packagesPILBmpImagePlugin.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

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

答案

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

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

convert image.bmp -compress none image.bmp

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

convert image.bmp result.png

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

另一答案

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

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

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

以上是关于不支持的BMP压缩 - BMP到JPEG - PIL - Python的主要内容,如果未能解决你的问题,请参考以下文章

bmp 和JPG有啥区别

JPEG、GIF、PNG、BMP哪种图片格式的图片清晰一点?

jpg rm rar doc bmp wav zip wmv xls ppt各属于啥类

JPEG、GIF、PNG、BMP哪种图片格式的图片清晰一点?

JPG、GIF、PNG和BMP格式的图片各有啥优点和缺点?

图片的四种格式.jpg、.gif、.png、.bmp各是啥意思?