Сглаживание отрендеренных PDF-файлов с использованием wxPython + pymupdf
Я новичок в wxPython и pymupdf, и взглянул на примеры для wxPython + pymupdf. Они работают, однако качество pdf-страницы (отображается) довольно низкое. Я уверен, что это можно улучшить. В основном я ищу слютоин сглаживания. Однако я не знаю, как и не смог найти образец в Интернете. Пожалуйста, кто-нибудь может предоставить пример для отображения PDF-файлов с помощью wxpython + pymupdf.
Вот что я попробовал:
# https://pymupdf.readthedocs.io/en/latest/tutorial/#rendering-a-page
# if you used alpha=True (or letting default it):
bitmap = wx.Bitmap.FromBufferRGBA(pix.width, pix.height, pix.samples)
# if you used alpha=False:
bitmap = wx.Bitmap.FromBuffer(pix.width, pix.height, pix.samples)
А также это:
# http://code.activestate.com/recipes/580621-wxpython-pdf-xps-viewer-using-pymupdf-binding-for-/
pix = page.getPixmap(matrix = self.matrix)
bmp = wx.BitmapFromBuffer(pix.w, pix.h, pix.samplesRGB())
2 ответа
Следующее создает довольно качественное изображение для меня, используя просто pymupdf:
doc = fitz.open(fname)
for idx, page in enumerte(doc):
pix = page.getPixmap(alpha = False)
mat = fitz.Matrix(2.0, 2.0)
pix = page.getPixmap(matrix = mat)
pix.writeImage(dest + idx + '.jpg')
Вот пример того, как установить уровни сглаживания в PyMuPDF:
>>> import fitz
>>> fitz.TOOLS.anti_aliasing_values()
{'graphics': 8, 'text': 8, 'graphics_min_line_width': 0.0}
>>> fitz.TOOLS.set_aa_level(4)
>>> fitz.TOOLS.anti_aliasing_values()
{'graphics': 4, 'text': 4, 'graphics_min_line_width': 0.0}
>>> # now generate your pixmap etc., do not forget to also use gamma correction:
>>> pix.gammaWith(factor) # factor > 1.0
>>> # change the AA values again anytime
Полную ветку обсуждения, мотивировавшую реализацию, см. здесь https://github.com/pymupdf/PyMuPDF/issues/467 .