python - imsave 的 dpi 选项

标签 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 选项的工作原理。根据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.pngexiftool foo.png 都没有显示图像分辨率。

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

enter image description here

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

如何获取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/

相关文章:

python - 如何在matplotlib中标记补丁

javascript - 给定原始图像分辨率,缩放后如何使用javascript计算新分辨率?

visual-c++ - 设计一个适用于所有分辨率的MFC应用程序?

Python:如何从 gzip 压缩中流式传输/管道传输数据?

python - 如何修改日期字符串中的日期

python - 使用networkx按属性绘制节点形状和节点颜色

html - 响应式设计模式与调整浏览器窗口大小

python - Ubuntu 上的 Spyder 3 (Anaconda) - 如何将工作目录更改为终端的工作目录

python - 是否应该在 __init__ 中初始化所有成员变量

python - 使用pcolormesh时如何设置网格