来自imsave的dpi选项

问题描述 投票:1回答:2

考虑以下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

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

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

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

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

enter image description here

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

如何获得300dpi分辨率图像?

python matplotlib resolution
2个回答
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
投票

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

convert image <processing> -density 300 newimage

然后检查你可以做的密度

identify -verbose newimage

or

identify -format "%xx%y"

找到密度(分辨率)

© www.soinside.com 2019 - 2024. All rights reserved.