Python - 如何将BMP制作成JPEG或PDF?这样文件大小不是50MB而是更少?

2 python windows pdf jpeg scanning

当我扫描页面时,我有一个扫描仪,它生成一个BMP文件,但每页的大小是50MB.我如何告诉Python,使其JPEG和小尺寸.

rv = ss.XferImageNatively()
if rv:
(handle, count) = rv
twain.DIBToBMFile(handle,'imageName.bmp')
Run Code Online (Sandbox Code Playgroud)

你怎么告诉他把它变成JPEG或PDF?(本机传输始终是未压缩的图像,因此您的图像大小将为:(宽度 - 英寸*dpi)*(高度英寸*dpi)*每像素字节数)

qDo*_*Dot 5

您可以使用PIL(http://www.pythonware.com/products/pil/)或Pillow(https://github.com/python-pillow/Pillow)之类的东西,它将以您指定的格式保存文件基于文件名.

如果没有指定文件名,python TWAIN模块将从DIBToBMFile返回位图作为字符串,因此您可以将该字符串提供给其中一个图像库以用作缓冲区.否则,你可以保存到一个文件,然后打开该文件并重新保存它,但这是一种相当迂回的做事方式.

编辑:看(懒惰模式)

from PIL import Image
img = Image.open('C:/Python27/image.bmp')
new_img = img.resize( (256, 256) )
new_img.save( 'C:/Python27/image.png', 'png')
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

  • 请参阅编辑部分,请始终发布代码示例,对于在研究和开发中遇到类似问题的其他用户来说,几年后它仍然会更好。谢谢 (2认同)