将Python枕头图像转换为PDF,然后合并内存问题
目标: 将有限数量的文件转换为.jpg格式,并将其合并为一个PDF文件 预期结果: 文件夹中的文件已成功转换并合并到指定位置的一个pdf文件中 问题: 当文件大小超过一定数量时,在我的测试中大约为400 mb,程序崩溃,并显示以下消息:将Python枕头图像转换为PDF,然后合并内存问题,python,pdf-generation,python-imaging-library,Python,Pdf Generation,Python Imaging Library,目标: 将有限数量的文件转换为.jpg格式,并将其合并为一个PDF文件 预期结果: 文件夹中的文件已成功转换并合并到指定位置的一个pdf文件中 问题: 当文件大小超过一定数量时,在我的测试中大约为400 mb,程序崩溃,并显示以下消息: Traceback (most recent call last): File "C:\Users\kaczk\AppData\Local\Programs\Python\Python38-32\lib\site-packages\PIL\ImageFi
Traceback (most recent call last):
File "C:\Users\kaczk\AppData\Local\Programs\Python\Python38-32\lib\site-packages\PIL\ImageFile.py", line 498, in _save
fh = fp.fileno()
io.UnsupportedOperation: fileno
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "MakePDF.py", line 10, in <module>
im1.save(pdf1_filename, "PDF" ,resolution=1000.0, save_all=True, append_images=imageList)
File "C:\Users\kaczk\AppData\Local\Programs\Python\Python38-32\lib\site-packages\PIL\Image.py", line 2084, in save
save_handler(self, fp, filename)
File "C:\Users\kaczk\AppData\Local\Programs\Python\Python38-32\lib\site-packages\PIL\PdfImagePlugin.py", line 46, in _save_all
_save(im, fp, filename, save_all=True)
File "C:\Users\kaczk\AppData\Local\Programs\Python\Python38-32\lib\site-packages\PIL\PdfImagePlugin.py", line 175, in _save
Image.SAVE["JPEG"](im, op, filename)
File "C:\Users\kaczk\AppData\Local\Programs\Python\Python38-32\lib\site-packages\PIL\JpegImagePlugin.py", line 770, in _save
ImageFile._save(im, fp, [("jpeg", (0, 0) + im.size, 0, rawmode)], bufsize)
File "C:\Users\kaczk\AppData\Local\Programs\Python\Python38-32\lib\site-packages\PIL\ImageFile.py", line 513, in _save
fp.write(d)
MemoryError
在内存使用方面,我是否犯了一个简单的错误?在处理越来越多的文件时,是否有不同的模块可以使任务更轻松?我将非常感谢大家的帮助。这个问题已经很老了,但自从我为同样的问题苦苦挣扎之后,这里有一个答案 您只需在使用图像后关闭它们:
im1.close()
for i in imageList:
i.close()
这为我解决了问题
PS:看看
glob
,使用路径很容易。这个问题很老了,但自从我在那里遇到同样的问题后,这里有一个答案
您只需在使用图像后关闭它们:
im1.close()
for i in imageList:
i.close()
这为我解决了问题
PS:看看glob
,它使使用路径变得非常容易