Подтвердить что ты не робот

Прозрачность в PNG с отчетностью 2.3

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

Есть ли кто-нибудь, кто собрал прозрачный PNG на холст ReportLab, с прозрачной работой? Спасибо!

4b9b3361

Ответ 2

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

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

UPDATE: это маскирует все, что есть rgb(0, 0, 0) или rgb(1, 1, 1), что, очевидно, может быть неправильным решением. Моя проблема заключалась в том, что пользователи загружали PNG-изображения с серого цветового пространства. Поэтому мне нужно все же выяснить способ определения цветового пространства изображения. и применять эту маску только к серым пространственным изображениям.

Ответ 3

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