ошибка в python wand "wand.resource.DestroyedResourceError: <wand.image.Image: (closed)> уже уничтожен" - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь запустить скрипт, который будет проходить через определенную папку и использовать Wand для создания .png файла каждого файла .pdf, который он найдет в этой папке.

from wand.image import Image<br />import os<br /><br />pdf_dir = r"D:\Program Files\Python\Python36-32\tom's shitty programs\Downloads"<br /><br />for x in os.listdir(pdf_dir):<br />    if x.endswith(".pdf"):<br />        pdf_path = pdf_dir + '\\' + x<br />        with Image(filename=pdf_path, resolution=300) as pdf:<br />            page_index = 0<br />            height = pdf.height<br />        with Image(width=pdf.width, height=len(pdf.sequence)*height) as png:<br />            for page in pdf.sequence:<br />                png.composite(page, 0, page_index * height)<br />                page_index += 1<br />            png.save(filename=pdf_path[:-3] + "png")

Возвращает следующие ошибки:

Traceback (последний последний вызов):

Файл "D: \ Program Files \ Python \ Python36-32 \ tom's shitty Programs \ venv \ lib \ site-packages \ wand \ image.py", строка 1799, в wand возвращает self.resource

Файл "D: \ Program Files \ Python \ Python36-32 \ tom's shitty Programs \ venv \ lib \ site-packages \ wand \ resource.py", строка 151, в ресурсном увеличении DestroyedResourceError (repr (self) + ' уже уничтожен ')

wand.resource.DestroyedResourceError: уже уничтожено

Во время обработки вышеуказанного исключения произошло другое исключение:

Traceback (последний последний вызов):

Файл "D: / Program Files / Python / Python36-32 / дерьмовые программы Тома / wand_test.py", строка 13, с изображением (ширина = pdf.width, высота = len (pdf.sequence) * высота) как png:

Файл "D: \ Program Files \ Python \ Python36-32 \ tom's shitty Programs \ venv \ lib \ site-packages \ wand \ image.py", строка 1817, по ширине возвращает библиотеку.MagickGetImageWidth (self.wand)

Файл "D: \ Program Files \ Python \ Python36-32 \ tom's shitty Programs \ venv \ lib \ site-packages \ wand \ image.py", строка 1801, в рейде поднять ClosedImageError (repr (self) + ' уже закрыто)

wand.image.ClosedImageError: уже закрыто

Любая помощь приветствуется ... спасибо

1 Ответ

0 голосов
/ 15 января 2019

Это всего лишь незначительные with ... as .. менеджер контекста проблемы и / или опечатки. Как говорится в сообщении об ошибке, вы пытаетесь работать с переменной (pdf) после того, как ресурсы уже закрыты. Дважды проверьте отступ.

with Image(filename=pdf_path, resolution=300) as pdf:
    page_index = 0
    height = pdf.height
    with Image(width=pdf.width, height=len(pdf.sequence)*height) as png:
        for page in pdf.sequence:
            png.composite(page, 0, page_index * height)
            page_index += 1
        png.save(filename=pdf_path[:-3] + "png")

Если вы используете версию 0.5.0 Wand, вы можете воспользоваться методом wand.image.Image.concat.

with Image(filename=pdf_path, resolution=300) as pdf:
    pdf.concat(True)
    pdf.save(filename=pdf_path[:-3] + "png")
...