首页 > 解决方案 > 在 Lambda / Python 上保存图像时丢失字节

问题描述

我需要使用 Lambda 和 Python 将 PDF 的每一页保存为 S3 上的图像。该代码适用于大多数 PDF,但对于其中一些,保存的图像只是 pdf 的一小部分。我在我的机器(Mac)和 Lambda 之间将相同的 PDF 与相同的代码进行比较,我可以看到它保存的字节数不同

例如,对于此 PDF 的第 2 页,我的计算机上的“in_mem_file”第 2 页的大小为 1,179,164,但在 Lamba 上运行时只有“224,223”。

我测试了许多其他 PDF,我发现我的计算机和 Lambda 之间的大小相似,并且运行良好。

请让我知道这是否可以修复,或者是否有其他方法可以将图像保存到 S3

谢谢

images_from_pdf = convert_from_bytes(pdf,
                                    dpi=300,
                                    grayscale=False,
                                    first_page=first,
                                    last_page=last,
                                    thread_count=np,
                                    poppler_path="/mnt/access/poppler_binaries"

                                   ) 


for i in range(0,len(images_from_pdf)):
    
    page_num = first + i
    
    print('size of images_from_pdf page ',str(page_num),': ',sys.getsizeof(images_from_pdf[i]))
    
    in_mem_file = io.BytesIO()
    # in_mem_file.seek(0)
    
    # image_to_save = images_from_pdf[i].copy()
    
    images_from_pdf[i].save(in_mem_file, format="JPEG")
    in_mem_file.seek(0)
    
    
    print('size of in_mem_file page ',str(page_num),': ',sys.getsizeof(in_mem_file))
    
    write_object(bucket='benjamin-test-lambda',key=image_folder+ 'image_'+str(page_num) +'.jpg', data= in_mem_file)

标签: pythonimageaws-lambdabyte

解决方案


推荐阅读