python - 在 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)
解决方案
推荐阅读
- reactjs - 在渲染组件之前获取信息但无法使用 getInitialProps ReactJS
- python - 我应该如何从数据框中删除除空格外的特殊字符
- javascript - MochaJS - 在其他文件中重用块
- android - 如何在全球范围内保存音频以使用本机音乐应用程序访问它
- git - 部署到产品后恢复以前的版本
- python - 如何绘制 influxdb 的查询数据?
- laravel - 从 Laravel 中的 store 方法传递数据以创建视图
- java - Java NIO allocateDirect 预先或在系统调用之前复制
- npm - npm 安装错误:libpng-dev
- python - 如何知道我们可以在 python 中的列表上执行的所有操作?