考虑以下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.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打印应该不是问题。
在ImageMagick中,您可以设置输出密度
convert image <processing> -density 300 newimage
然后检查你可以做的密度
identify -verbose newimage
or
identify -format "%xx%y"
找到密度(分辨率)