1

我正在尝试使用 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
4

0 回答 0