Python 3.x 如何将alpha通道正确添加到使用PyMuPDF从PDF提取的图像中
我正在尝试使用PyMuPDF和从PDF中提取图像。对于某些具有硬边透明度的图像,它是有效的。但是对于具有蒙版透明度的图像,我会沿着边缘获得瑕疵 当我提取没有alpha信息的图像和作为单独PNG的alpha掩码,并使用GIMP组合它们时,结果与预期的一样,因此信息似乎存在 有人能帮忙吗?我漏了一步吗Python 3.x 如何将alpha通道正确添加到使用PyMuPDF从PDF提取的图像中,python-3.x,png,pymupdf,Python 3.x,Png,Pymupdf,我正在尝试使用PyMuPDF和从PDF中提取图像。对于某些具有硬边透明度的图像,它是有效的。但是对于具有蒙版透明度的图像,我会沿着边缘获得瑕疵 当我提取没有alpha信息的图像和作为单独PNG的alpha掩码,并使用GIMP组合它们时,结果与预期的一样,因此信息似乎存在 有人能帮忙吗?我漏了一步吗 import fitz doc = fitz.open(r"Some.pdf") for i in range(len(doc)): for img in doc.getPageImage
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
导入fitz
doc=fitz.open(r“Some.pdf”)
对于范围内的i(len(doc)):
对于文档getPageImageList(i)中的img:
外部参照=img[0]
smask=img[1]
pix1=fitz.Pixmap(文档,外部参照)
如果是smask!=0:
pix2=fitz.Pixmap(doc,smask)
pix=fitz.Pixmap(pix1)
pix.setAlpha(pix2.samples)
其他:
pix=pix1
如果pix.n-pix.alpha<4:#这是灰色或RGB
pix.writePNG(“img-%s-%s.png”%(i,外部参照))
其他:#CMYK:首先转换为RGB
pix1=fitz.Pixmap(fitz.csRGB,pix)
pix1.writePNG(“img-%s-%s.png”%(i,外部参照))
pix1=无
pix=无
FYI:我通过分别保存不透明度遮罩和图像,然后使用PyPng库组合图像,获得了我想要的。这段代码非常难看,应该只用于小图像(因为它当前读取整个图像,而不是使用迭代器),所以我不会立即发布它,但如果我能清理它,我会在这里分享。不过,我仍然对只使用PyMuPDF的解决方案感兴趣。仅供参考:我通过分别保存不透明度遮罩和图像,然后使用PyPng库组合图像,成功地获得了我想要的结果。这段代码非常难看,应该只用于小图像(因为它当前读取整个图像,而不是使用迭代器),所以我不会立即发布它,但如果我能清理它,我会在这里分享。不过,我仍然对只使用PyMuPDF的解决方案感兴趣。