不支持的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的主要内容,如果未能解决你的问题,请参考以下文章
JPEG、GIF、PNG、BMP哪种图片格式的图片清晰一点?
jpg rm rar doc bmp wav zip wmv xls ppt各属于啥类