我正在尝试使用 PyMuPDF 和这个食谱从 PDF 中提取图像。对于某些具有硬边缘透明度的图像,它可以工作。但是对于具有哑光透明度的图像,我会沿着边缘得到伪影。
当我将没有 alpha 信息的图像和 alpha 掩码提取为单独的 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