考虑以下 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
选项的工作原理。根据matplotlib.pyplot.imsave文档,
dpi : int
The DPI to store in the metadata of the file. This does not affect the resolution of the output image.
上述程序的输出是一个 1024x1024
图像文件。
我不明白的是,identify -verbose foo.png
和 exiftool foo.png
都没有显示图像分辨率。
但是,用 ImageMagick (显示)打开它并检查图像信息,我发现
那么,分辨率和打印尺寸值背后的数学是什么?
如何获取300dpi
分辨率的图像?
最佳答案
像 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 应该不成问题。
关于python - imsave 的 dpi 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55714989/