Я столкнулся с проблемой, которую я не могу понять с помощью PIL и reportlab. В частности, я хотел бы использовать drawImage на холсте в reportlab, используя объект PIL Image.ReportLab и изображения библиотеки изображений Python из памяти проблема
В прошлом я вставлял изображения в документы reportlab из Интернета, используя необработанные данные, StringIO и класс ImageReader Reportlab. К сожалению, ImageReader принимает имя файла или файловый буфер, такой как объект.
Конечная цель - разместить QR-коды (объекты PIL) в PDF-файлах reportlab. Одна вещь, которая делает работу, заключается в следующем:
size, qrcode = PyQrcodec.encode('http://www.google.com')
qrcode.save("img.jpeg")
self.pdf.drawImage(ImageReader("img.jpeg"), 25, 25, width=125, height=125)
self.pdf.showPage()
Это сохраняет изображение, а затем считывает его в pdf. Очевидно, что делать это не имеет смысла.
Мои усилия усугубляются относительно продолжительной историей развития reportlab, которая позволяет найти ответы, относящиеся к последней версии (2.4).
Спасибо за помощь.
(Кстати, я использую 1.1.6 PIL)
Кстати, функция выше находится в lib/utils.py в reportlab. – philipk
+1 хороший улов. Установщик PIL, устанавливающий модули PIL в папке PIL с пути сайта, является сомнительным решением, но ReportLab делает худшую ошибку, полагаясь на него. Он должен просто импортировать изображение. Я работал над проблемой путем обезглавливания снаружи: импортируйте изображение самостоятельно и произнося «reportlab.lib.utils.Image = Image». – bobince
@bobince имеет правильную идею здесь. ReportLab делает некоторые действительно плохие предположения относительно местоположения PIL, но после импорта следует очищать его с помощью 'reportlab.lib.utils.Image = Image', чем использовать код ReportLab и усложнять развертывание. – dkamins