Проблемы с Python Wand и путями к изображениям JXR при попытке конвертировать изображения JXR в формат JPG?
Мне нужно иметь возможность конвертировать изображения в формате JPEG-XR в формат JPG, и я получил эту работу через сам ImageMagick. Тем не менее, я должен быть в состоянии сделать это из приложения Python, и я смотрел на использование Wand. Wand, похоже, неправильно использует пути к изображениям JXR.
with open(os.path.join(args.save_location, img_name[0], result[0]+".jxr"), "wb") as output_file:
output_file.write(result[1])
with Image(filename=os.path.join(args.save_location, img_name[0], result[0]+".jxr")) as original:
with original.convert('jpeg') as converted:
print(converted.format)
pass
Первая часть этого - создание output_file и запись результата [1] (блоб изображений JXR из базы данных SQLite) - работает отлично. Однако, когда я пытаюсь затем открыть этот вновь сохраненный файл как изображение, используя Python и Wand, я получаю ошибку, которая в конечном итоге говорит о том, что Wand не ищет в правильном месте изображения:
Extracting panorama 00000
FAILED: -102=pWS->Read(pWS, szSig, sizeof(szSig))
JXRGlueJxr.c:1806
FAILED: -102=ReadContainer(pID)
JXRGlueJxr.c:1846
FAILED: -102=pDecoder->Initialize(pDecoder, pStream)
JXRGlue.c:426
FAILED: -102=pCodecFactory->CreateDecoderFromFile(args.szInputFile, &pDecoder)
e:\coding\python\sqlite panoramic image extraction tool\jxrlib\jxrencoderdecoder\jxrdecapp.c:477
JPEG XR Decoder Utility
Copyright 2013 Microsoft Corporation - All Rights Reserved
... [it outputs its help page in case of errors; snipped]
The system cannot find the file specified.
Traceback (most recent call last):
File "E:\Coding\Python\SQLite Panoramic Image Extraction Tool\SQLitePanoramicImageExtractor\trunk\PanoramicImageExtractor.py", line 88, in <module>
with Image(filename=os.path.join(args.save_location, img_name[0], result[0]+".jxr")) as original:
File "C:\Python34\lib\site-packages\wand\image.py", line 1991, in __init__
self.read(filename=filename, resolution=resolution)
File "C:\Python34\lib\site-packages\wand\image.py", line 2048, in read
self.raise_exception()
File "C:\Python34\lib\site-packages\wand\resource.py", line 222, in raise_exception
raise e
wand.exceptions.BlobError: unable to open image `C:/Users/RPALIW~1/AppData/Local/Temp/magick-14988CnJoJDwMRL4t': No such file or directory @ error/blob.c/OpenBlob/2674
Как вы можете видеть в самом конце, он, кажется, пытался убежать, чтобы открыть временный файл 'C:/Users/RPALIW~1/AppData/Local/Temp/magick-14988CnJoJDwMRL4'. Имя файла, используемое в этой точке, должно быть точно таким же, как имя файла, используемое для сохранения изображений в виде файла несколькими строками выше, но Wand заменил что-то еще? Это похоже на последнюю проблему, с которой я столкнулся в ImageMagick, которая была исправлена на выходных (подробнее здесь: http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=27027&p=119702).
Кто-нибудь успешно получил Wand, чтобы открывать образы JXR как изображение в Python и конвертировать в другой формат? Я здесь что-то не так делаю, или виноват ImageMagick или Wand?
1 ответ
Нечто подобное происходит со мной. Я получаю сообщение об ошибке:
wand.exceptions.BlobError: unable to open image `/var/tmp/magick-454874W--g1RQEK3H.ppm': No such file or directory @ error/blob.c/OpenBlob/2701
Указанный путь не является путем файла I изображения, которое я пытаюсь открыть.
Из документов:
Большой двоичный объект не может быть размещен, прочитан или записан.
И я пытаюсь открыть большой файл. (18mb .cr). Может ли размер файла быть проблемой?
Для меня:
from wand.image import Image as WImage
with open(file_name, 'r+') as f:
with WImage(file = f) as img:
print 'Opened large image'
Или же:
with open(file_name, 'r+') as f:
image_binary = f.read()
with WImage(blob = image_binary) as img:
print 'Opened Large Image'
Сделал трюк
~ Виктор