使用PIL在Python中压缩PNG图像

时间:2016-01-25 22:56:44

标签: python-2.7 selenium selenium-webdriver python-imaging-library

我有一个用Selenium Builder录制的python脚本,它使用以下内容获取网页的完整浏览器屏幕截图:

fileName = "Screenshot1.png"
webDriverInstance.save_screenshot(fileName)

文件大小约为3.5 MB,因为它是一个长的可滚动页面,我需要完整的浏览器屏幕截图。我需要一种方法来压缩保存的屏幕截图,或者将它们保存为较小的文件大小的PNG图像,这样我就可以使用另一个Python脚本(使用smtplib)在同一封电子邮件中附加和发送几个这样的屏幕截图。

我试过了:

fileName = "Screenshot1.png"
foo = Image.open(fileName)
fileName2 = "C:\FullPath\CompressedImage.png"
foo.save(fileName2, "PNG", optimize = True)

然而,这似乎并没有起作用。两个文件,Screenshot1.png和CompressedImage.png都具有相同的大小(约3.5 MB)。

我使用save方法尝试了几个选项,但它们似乎都没有用。我运行脚本时没有出现任何错误,但文件大小也没有减少。

foo.save(fileName2, "PNG", optimize = True, compress_level = 9)
foo.save(fileName2, "PNG", optimize = True, quality = 20)

我正在使用Python 2.7。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

PNG格式只支持无损压缩,压缩比通常是有限的,不能随意调整。

如果我是对的,有一个可变参数告诉压缩器花更多或更少的时间寻找更好的压缩方案。但不能保证成功。