'jpeg' - ошибка неподдерживаемого формата

Это метод, который я написал:

def pdf_page_to_png(src_pdf, pagenum=0, resolution=300, slug=''):
    dst_pdf = PyPDF2.PdfFileWriter()
    dst_pdf.addPage(src_pdf.getPage(pagenum))

    pdf_bytes = io.BytesIO()
    dst_pdf.write(pdf_bytes)
    pdf_bytes.seek(0)

    img = Image(file=pdf_bytes, resolution=resolution)
    img.convert("jpeg")

    if pagenum == 0:
        os.makedirs('media/einsert/%s' % slug)

    img.save(filename='media/einsert/%s/page_%s.jpeg' % (slug, pagenum))

    return img

и я получаю

"JPEG" не поддерживается формат

ошибка

/Users/daro/praca/polsha24/lib/python2.7/site-packages/wand/image.py in format
    def format(self, fmt):
        if not isinstance(fmt, string_type):
            raise TypeError("format must be a string like 'png' or 'jpeg'"
                            ', not ' + repr(fmt))
        fmt = fmt.strip()
        r = library.MagickSetImageFormat(self.wand, binary(fmt.upper()))
        if not r:
                        raise ValueError(repr(fmt) + ' is unsupported format') ...
        r = library.MagickSetFilename(self.wand,
                                      b'buffer.' + binary(fmt.lower()))
        if not r:
            self.raise_exception()
    @property

OSX El Capitan Python 2.7.10 тот же код работает на другом компьютере с Debian.

2 ответа

Вам может потребоваться установить "jpeg" и / или "ghostscript"

Для Mac:

brew install jpeg
brew install ghostscript

Для Linux:

JPEG: http://www.ijg.org/files/

Ghostscript: http://ghostscript.com/download/

Загрузите и установите последние версии.

Это решило подобную проблему для меня.

Вы неправильно поняли функцию Image.convert. Он не конвертирует между форматами файлов, но форматами пикселей, например, "RGB" для пикселей RGB или "CMYK" для данных CMYK. Для фактического вывода изображения в определенном формате файла используйте Image.save:

jpeg_bytes = io.BytesIO()
img.save(jpeg_bytes, "jpeg")

Буфер jpeg_bytes затем содержит данные JPEG.

Изменить: если я правильно помню, PDF только для записи в PIL. Таким образом, вы не можете загрузить изображение из PDF необработанных данных. Но это другая проблема...

Другие вопросы по тегам