来自imsave的dpi选项

时间:2019-04-16 19:00:43

标签: python matplotlib resolution

考虑以下MWE生成随机图像:

import matplotlib.pyplot as plt
import numpy as np

pts = np.random.random_sample((1024, 1024))

plt.imsave('foo.png',pts, dpi=300)

我正在尝试了解dpi选项的工作方式。根据{{​​3}}文档,

  

dpi : int

     

要存储在文件元数据中的DPI。这不会影响输出图像的分辨率。

上面程序的输出是一个1024x1024图像文件。

我不了解identify -verbose foo.pngexiftool foo.png都没有显示图像分辨率的事实。

但是,我发现使用ImageMagick(显示器)将其打开并检查图像信息,

matplotlib.pyplot.imsave

那么,分辨率和打印尺寸值背后的数学是什么?

如何获取300dpi分辨率的图像?

2 个答案:

答案 0 :(得分:1)

诸如png的图像格式未定义dpi。如果通过imsave保存1024 x 1024像素阵列,则图像将仅为1024 x 1024像素。

Imagemagick似乎忽略了任何元数据,因此假定分辨率为96 dpi。然后根据像素尺寸(1024)和dpi(96)计算出以英寸为单位的尺寸

1024 dots / 96 dots per inch  = 10.667 inch

也就是说,问题“如何获取300dpi分辨率的图像?”还不是很清楚。但是大多数图形查看器允许在打印之前缩放图像,因此在纸上获得300 dpi的打印不是问题。

答案 1 :(得分:1)

在ImageMagick中,您可以将输出密度设置为

convert image <processing> -density 300 newimage


然后要检查密度,您可以选择

identify -verbose newimage

or

identify -format "%xx%y"


找到密度(分辨率)