Неподдерживаемое сжатие BMP - BMP в JPEG - PIL - Python - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь преобразовать изображение в формате 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

Может кто-нибудь направить меня через эту ошибку?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

После многих возможных попыток я нашел решение с библиотекой openCV.Это не вызывает у меня никакой ошибки сжатия и обрабатывает преобразование как талисман.

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

Спасибо за @Mark за его предложение тоже.Поскольку мне нужно конвертировать большое количество изображений, и openCV кажется облегченным, чтобы справиться с проблемой, которую я собираюсь использовать с openCV.

0 голосов
/ 19 сентября 2018

Это не твоя вина.Изображение в формате неловкий Microsoft BMP V3 с, я полагаю, сжатием RLE, и я не верю, что Подушка справится с этим.

Вы можете использовать ImageMagick чтобы переписать изображение без этого сжатия в Терминале, как это, и тогда ваш код будет работать нормально:

convert image.bmp -compress none image.bmp

Но если вы делаете это, вы также можете использовать ImageMagick чтобы сделать PNG тоже:

convert image.bmp result.png

В качестве альтернативы, если вы хотите использовать Python, вы можете попробовать другую библиотеку, такую ​​как pyvips - я попробую и сообщуназад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...