考虑以下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.png
和exiftool foo.png
都没有显示图像分辨率的事实。
但是,我发现使用ImageMagick(显示器)将其打开并检查图像信息,
那么,分辨率和打印尺寸值背后的数学是什么?
如何获取300dpi
分辨率的图像?
答案 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"
找到密度(分辨率)