Прозрачность в PNG с отчетом 2.3 - PullRequest
23 голосов
/ 21 августа 2009

У меня есть два PNG, которые я пытаюсь объединить в PDF, используя ReportLab 2.3 на Python 2.5. Когда я использую canvas.drawImage (ImageReader) для записи любого PNG на холст и сохранения, прозрачность получается черной. Если я использую PIL (1.1.6) для генерации нового изображения, а затем вставляю () любой PNG-файл в изображение PIL, оно прекрасно компоновается. Я дважды проверил в Gimp, и оба изображения имеют рабочие альфа-каналы и сохраняются правильно. Я не получаю сообщение об ошибке, и кажется, что мой google-fu может что-то найти.

Кто-нибудь создавал прозрачный PNG на холсте ReportLab, с прозрачностью, работающей должным образом? Спасибо!

Ответы [ 3 ]

52 голосов
/ 26 октября 2009

Передача параметра маски со значением 'auto' в drawImage исправляет это для меня.

drawImage(......., mask='auto')

Дополнительная информация о функции drawImage

2 голосов
/ 07 февраля 2015

Я обнаружил, что mask='auto' перестал работать для меня с reportlab 3.1.8. В документах говорится, что нужно передать значения, которые вы хотите замаскировать. Так что сейчас у меня работает mask=[0, 2, 0, 2, 0, 2, ]. По сути, это выглядит так

Параметр маски позволяет создавать прозрачные изображения. Требуется 6 цифры и определяет диапазон значений RGB, которые будут маскироваться или рассматривается как прозрачный. Например, с [0,2,40,42,136,139], это будет маскировать любые пиксели со значением Red от 0 или 1, Green от 40 или 41 и синий 136, 137 или 138 (по шкале 0-255). Это в настоящее время ваша работа, чтобы знать, какой цвет является «прозрачным» или фон один.

ОБНОВЛЕНИЕ: Это маскирует все, что является rgb(0, 0, 0) или rgb(1, 1, 1), что, очевидно, не может быть правильным решением Моя проблема заключалась в том, что люди загружали изображения в формате PNG с серым цветовым пространством. Поэтому мне нужно еще найти способ определения цветового пространства изображения. и применять эту маску только к изображениям серого пространства.

1 голос
/ 21 августа 2009

ReportLab использует PIL для управления изображениями. В настоящее время для магистрали PIL применяется патч для поддержки прозрачных PNG, но вам придется ждать выпуска 1.1.6, если вам нужен стабильный пакет.

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