Python Wand: MagickreadMage возвращает ложь, но не поднял исключение ImageMagickPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python Wand: MagickreadMage возвращает ложь, но не поднял исключение ImageMagick

Сообщение Anonymous »

У меня есть немного давний код в кодовой базе Django, которая читается в PDF и использует палочку, чтобы сделать скриншот первой страницы PDF, которая затем отображается на веб-сайте. Недавно мы мигрировали серверы (обновление с Ubuntu 22 LTS до 24 LTS), и что -то сломалось, и я не могу для жизни. /> [*] django 5.2.4 < /li>
Wand 0.6.13 < /li>
Веб -сервер: nginx 1.24.0 < /li>
Сервина овиновника: 23.0.0 < /li>
Мы не являемся < /em>. Это приложение Django работает непосредственно на сервере с локальной виртуальной средой. Вот сердце этого: < /p>

Код: Выделить всё

with Image(filename=pdf_location) as pdf:
with Image(pdf.sequence[0]) as first_page_pdf:
with first_page_pdf.convert('png') as first_page_png:
first_page_png.background_color = Color('white')
first_page_png.alpha_channel = 'remove'
return first_page_png.make_blob()
< /code>
Когда я загружаю PDF на сайт администратора для обработки, я получаю эту ошибку: < /p>
MagickReadImage returns false, but did not raise ImageMagick  exception. This can occur when a delegate is missing, or returns EXIT_SUCCESS without generating a raster.
Я пробовал все, о чем я могу придумать после тонны поиска, но ничего не работает:
  • I do установить GhostScript:

Код: Выделить всё

$ gs --version
10.02.1
$ which gs
/usr/bin/gs
[*] My ImageMagick Police.xml содержит контент по умолчанию, найденный в файле Policy-debian.xml , который включен в пакет ImageMagick, с заметным исключением, обеспечивающего
< /ul>

Код: Выделить всё

$ identify -list policy

Path: /etc/ImageMagick-6/policy.xml
Policy: Resource
name: disk
value: 2GiB
Policy: Resource
name: map
value: 2048MiB
Policy: Resource
name: memory
value: 1024MiB
Policy: Resource
name: area
value: 256MP
Policy: Resource
name: height
value: 32KP
Policy: Resource
name: width
value: 32KP
Policy: Undefined
rights: None
Policy: Path
rights: None
pattern: @*
Policy: Delegate
rights: None
pattern: URL
Policy: Delegate
rights: None
pattern: HTTPS
Policy: Delegate
rights: None
pattern: HTTP
Policy: Coder
rights: Read Write
pattern: PDF

Path: [built-in]
Policy: Undefined
rights: None
< /code>

 Преобразование одного и того же файла PDF  работает, когда я делаю это вручную как с GhostScript, так и с ImageMagick (как предложено здесь): < /li>
< /ul>
$ gs -sDEVICE=pngalpha -o page-%03d.png -r120 pdf-test.pdf
GPL Ghostscript 10.02.1 (2023-11-01)
Copyright (C) 2023 Artifex Software, Inc.  All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Processing pages 1 through 1.
Page 1
Loading font ArialMT (or substitute) from /usr/share/ghostscript/10.02.1/Resource/Font/NimbusSans-Regular
< /code>
и < /p>
$ convert -density 120 pdf-test.pdf page-%03d.png
< /code>
Оба правильно создать page-001.png < /code> при использовании этого теста PDF. < /p>

 И, наконец, при выполнении этого вручную в моей оболочке django (то есть в том же venv, что nginx использует), он также работает правильно: < /li>

PrettyPrint-Override ">$ ./manage_dev.py shell
19 objects imported automatically (use -v 2 for details).

Python 3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from wand.image import Image, Color
>>> with Image(filename='pdf-test.pdf') as pdf:
...   with Image(pdf.sequence[0]) as first_page_pdf:
...     with first_page_pdf.convert('png') as first_page_png:
...       first_page_png.background_color = Color('white')
...       first_page_png.alpha_channel = 'remove'
...       blob = first_page_png.make_blob()
...       with open('screenshot.png', 'wb') as png:
...          png.write(blob)
...
24420
< /code>

 Одна вещь, которая немного странна, заключается в том, что когда я перечисляю делегатов ImageMagick, GS < /code> не указан. Это единственное, о чем я могу придумать, что может вызвать проблему, но я не могу понять, как ее перечислить: < /li>
< /ul>
$ convert -list configure | grep DELEGATES
DELEGATES      bzlib djvu fftw fontconfig freetype heic jbig jng jpeg lcms lqr lzma openexr openjp2 pango png ps raw tiff webp wmf x xml zlib zstd
DELEGATES      bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png raw tiff webp wmf x xml zlib
< /code>
Обратите внимание, что это не опечатка; Здесь есть 2 линии делегатов 
, и ни одна из них не содержит GS .
для повторного подтверждения, этот код отлично работал в течение многих лет до этой миграции/обновления сервера, так что все это заставляет меня верить, что я просто не могу приложить его файл конфигурации (Imagemagick, Nginx?). Я действительно надеюсь, что у одного из вас может быть некоторое представление.
Заранее! Я должен? < /Li>
< /ul>

Код: Выделить всё

$ convert -version
Version: ImageMagick 6.9.12-98 Q16 x86_64 18038 https://legacy.imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(4.5)
Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png raw tiff webp wmf x xml zlib
< /code>

 convert -list configure | grep pdf
не возвращает никаких результатов. Я не вижу PDF eps ... .

[*] У меня не было в моей политике. Xml . Я добавил эту строку и устанавливаю права для чтения | write , но я все еще получаю ту же ошибку. Настройка его для чтения фактически введено политикуррором : попытка выполнить операцию, не разрешенную политикой безопасности `pdf ' @ error/module.c/openmodule/1293 .



Подробнее здесь: https://stackoverflow.com/questions/797 ... ick-except
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python Wand: MagickreadMage возвращает ложь, но не поднял исключение ImageMagick
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Python Wand: MagickreadMage возвращает ложь, но не поднял исключение ImageMagick
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Python Wand: MagickreadMage возвращает ложь, но не поднял исключение ImageMagick
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Python Wand: MagickreadMage возвращает ложь, но не поднял исключение ImageMagick
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Невозможно воссоздать команду Python Wand Composite в Wand, которая работает в ImageMagick Composite
    Гость » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»