获取PDF图像的DPI信息Python

问题描述 投票:0回答:3

我有一个 pdf 文件,其中嵌入了图像,我如何使用 python 获取该特定图像的 DPI 信息。 我尝试使用“pdfimages”popler-util,它为我提供了以像素为单位的高度和宽度。

但是我如何从中获取图像的 DPI。

python resolution dpi
3个回答
3
投票

与 PostScript 格式或 EPS 格式一样,PDF 文件没有分辨率,因为它是矢量格式。您所能做的就是检索 pt(或像素)中的图像尺寸:

from PyPDF2 import PdfFileReader


with io.open(path, mode="rb") as f:
    input_pdf = PdfFileReader(f)
    media_box = input_pdf.getPage(0).mediaBox

min_pt = media_box.lowerLeft
max_pt = media_box.upperRight

pdf_width = max_pt[0] - min_pt[0]
pdf_height = max_pt[1] - min_pt[1]

0
投票

pdfimages
也返回图像 dpi:

> pdfimages -list pdf.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    1308  1675  rgb     3   8  jpeg   no        17  0   150   150  166K 2.6%

x-ppi
是您所需要的,并且对于大多数情况来说已经足够了;我还发现这个方法效果非常快

我刚刚在这个 shell 命令上编写了一些包装器来运行它并使用 Python 类提取一些信息


0
投票

在 PDF 中,图像 ppi 不是 dpi。这只是它被注入的比例。

PDF 中的图像不了解 DPI,它们只是每个区域的像素数。

ppi 报告是基于存储宽度除以存储像素的名义建议,因此不是源分辨率,因为源分辨率是未知的。

您可以将图像提取为 300 DPI,它可能与源分辨率相似,或者 72 DPI 也没关系,报告 150 是其当前的内部放置 PPI 比例。

如果在注入期间未将其删除,某些 jpeg 的标头中可能仍具有源解析。

© www.soinside.com 2019 - 2024. All rights reserved.