首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PythonMagick中处理多页图像?

如何在PythonMagick中处理多页图像?
EN

Stack Overflow用户
提问于 2012-05-08 06:23:14
回答 3查看 6.1K关注 0票数 6

我想将一些多页.tif或.pdf文件转换为单独的.png图像。在命令行中(使用ImageMagick),我只需执行以下操作:

代码语言:javascript
复制
convert multi_page.pdf file_out.png

我得到的所有页面都是单独的图片(file_out-0.png,file_out-1.png,...)

我想在Python中处理这个文件转换,不幸的是PIL不能读取.pdf文件,所以我想使用PythonMagick。我试过了:

代码语言:javascript
复制
import PythonMagick
im = PythonMagick.Image('multi_page.pdf')
im.write("file_out%d.png")

或者只是

代码语言:javascript
复制
im.write("file_out.png")

但我只有一个页面转换为png。当然,我可以单独加载每个页面,并逐个转换它们。但必须有一种方法可以一次完成所有这些任务?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-03 06:46:53

ImageMagick的内存效率不高,所以如果你试图读取一个很大的pdf文件,比如100页左右,内存需求将是巨大的,它可能会崩溃或严重减慢你的系统。所以,毕竟用PythonMagick一次读取所有页面不是一个好主意,它不安全。所以对于pdf,我最终是一页一页地做,但要做到这一点,我需要首先使用pyPdf获得页数,这是相当快的:

代码语言:javascript
复制
pdf_im = pyPdf.PdfFileReader(file('multi_page.pdf', "rb"))
npage = pdf_im.getNumPages()
for p in npage:
    im = PythonMagick.Image('multi_page.pdf['+ str(p) +']')
    im.write('file_out-' + str(p)+ '.png')
票数 7
EN

Stack Overflow用户

发布于 2014-05-30 19:20:57

基于Ivo Flipse和http://p-s.co.nz/wordpress/pdf-to-png-using-pythonmagick/的答案的一个更完整的示例

它使用较高的分辨率,并使用PyPDF2而不是较旧的pyPDF。

代码语言:javascript
复制
import sys
import PyPDF2
import PythonMagick

pdffilename = sys.argv[1] 
pdf_im = PyPDF2.PdfFileReader(file(pdffilename, "rb"))
npage = pdf_im.getNumPages()
print('Converting %d pages.' % npage)
for p in range(npage):
    im = PythonMagick.Image()
    im.density('300')
    im.read(pdffilename + '[' + str(p) +']')
    im.write('file_out-' + str(p)+ '.png')
票数 2
EN

Stack Overflow用户

发布于 2012-08-01 13:49:32

我也遇到了同样的问题,作为解决办法,我使用了ImageMagick,并做到了

代码语言:javascript
复制
import subprocess
params = ['convert', 'src.pdf', 'out.png']
subprocess.check_call(params)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10489960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档