Я пытаюсь извлечь изображения из PDF с помощью PyMuPDF и этот рецепт . Для некоторых изображений с прозрачностью жесткого края это работает. Но для изображений с матовой прозрачностью я получаю артефакты по краям.
Когда я извлекаю изображение без альфа-информации и альфа-маску в виде отдельных PNG и объединяю их с использованием GIMP, результат получается ожидаемым, поэтому информация вроде бы там есть.
Может кто-нибудь помочь? Я пропускаю шаг?
import fitz
doc = fitz.open(r"Some.pdf")
for i in range(len(doc)):
for img in doc.getPageImageList(i):
xref = img[0]
smask = img[1]
pix1 = fitz.Pixmap(doc, xref)
if smask != 0:
pix2 = fitz.Pixmap(doc, smask)
pix = fitz.Pixmap(pix1)
pix.setAlpha(pix2.samples)
else:
pix = pix1
if pix.n - pix.alpha < 4: # this is GRAY or RGB
pix.writePNG("img-%s-%s.png" % (i, xref))
else: # CMYK: convert to RGB first
pix1 = fitz.Pixmap(fitz.csRGB, pix)
pix1.writePNG("img-%s-%s.png" % (i, xref))
pix1 = None
pix = None