如何在不保存的情况下使用PIL更改图像的DPI?

时间:2018-02-11 16:45:00

标签: python python-3.x python-imaging-library

我试图通过tesseract处理大量图像。尽管如此,我刚刚发现通过增加dpi我获得了更好的结果。我已经尝试在StackOverflow中查看如何增加图像的dpi,但是我发现的所有答案都涉及在保存文件时更改dpi,所以类似于:

img.save('test.png', dpi=(300.0, 300.0))

因此我想知道是否可以在不必保存文件的情况下执行此操作。

我尝试过以下操作:

image = Image.open('test.png', dpi=(300.0, 300.0)) 

但遗憾的是它不起作用

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

PNG格式将DPI信息存储在文件中的元数据块中,称为“pHYs”块。所以,你真的在​​寻找一种工具,它可以在PNG文件中编辑或添加这些块,而无需自己读取图像数据。

可以执行此操作的库libpng并且存在Python bindings

您可能还想查看解决同一问题的this question。显然,有IrfanViewImageMagick这样的工具可以更改PNG文件,比如在其中添加一个pHYs元数据块。

答案 1 :(得分:0)

只需在此处发布答案:How to change the dpi or density when saving images using PIL,我也发现了这一点。我认为在此发布的完整答案将回答您的问题。简而言之,我建议您保存一个临时文件,然后在完成后将其删除。我找不到其他解决方法。