che*_*ate 9 python pdf matplotlib
如何将 PDF 文件中的图像绘制成 Pyplot 图(例如,使用plt.imshow,或在我可以添加的某个容器内ax.add_artist)?
不起作用的方法:
import matplotlib.pyplot as plt
im = plt.imread('file.pdf')
Run Code Online (Sandbox Code Playgroud)
(来源:this question,它适用于 PNG 文件。)
from PIL import Image
im = Image.open('file.pdf')
Run Code Online (Sandbox Code Playgroud)
(来源:this doc,但同样,它不适用于 PDF 文件;该问题链接了一个库以读取 PDF,但该文档没有显示将它们添加到 Pyplot 图的明显方法。)
此外,此问题存在,但答案无需实际加载 PDF 文件即可解决问题。
有一个名为 PyMuPDF 的模块可以使这项工作变得更加容易。
下面的代码片段展示了如何迭代并抓取 PDF 的每一页作为PIL.Image
import io
import fitz
from PIL import Image
file = 'myfile.pdf'
pdf_file = fitz.open(file)
# in case there is a need to loop through multiple PDF pages
for page_number in range(len(pdf_file)):
page = pdf_file[page_number]
rgb = page.get_pixmap()
pil_image = Image.open(io.BytesIO(rgb.tobytes()))
# display code or image manipulation here for each page #
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,一旦存在PIL.Image对象(例如pil_image上面的变量),show()函数就可以显示它(并且根据操作系统的不同,显示方式也不同)。但是,如果首选使用,matplotlib.pyplot.imshow则PIL.Image必须先转换为 RGB。
PIL.Image显示的片段pyplot.imshow
import matplotlib.pyplot as plt
plt.imshow(pil_image.convert('RGB'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2491 次 |
| 最近记录: |