增加图像dpi以便于发布

2024-09-30 10:41:51 发布

您现在位置:Python中文网/ 问答频道 /正文

图像是从典型STM(扫描隧道显微镜)地形的Nanonis软件获得的,因此图像像素由软件设置固定,始终为512 x 512像素。然而,出于出版目的,我们通常需要通过自制的LabVIEW程序(执行线性背景减法等操作)校正图像背景

问题是LabVIEW处理后的导出图像的DPI值非常低(我认为是72 DPI)。但对于任何学术期刊来说,它们都对图像dpi值有一定的要求,通常,我们提交的文章中的图像至少需要300dpi。(我们一直试图通过修改LabVIEW程序来解决这个问题,但它太复杂了,而且到目前为止没有运气……这就是为什么我意识到Python可能会拯救我们的一天……?)

所以我想知道,有谁能帮我写一个Python代码来定义一个函数(LabVIEW只能调用Python函数)来增加图像的dpi(png),而不改变图像的大小(宽度和高度)

(可能是通过PIL软件包?不幸的是,我对这个不太熟悉) PNG图像示例如下:

enter image description here


Tags: 函数图像程序目的软件像素隧道背景
2条回答

您应该尝试使用PIL中的Image.save

img.save(fn, dpi=(300,300))

实际上,我不得不用谷歌搜索,因为对我来说,dpi直接取决于图像比例和屏幕。然而,这个术语似乎有很多混淆。它用于不同的用途,也可以单独设置大小,作为打印机打印大小的提示

更多信息here

我想这就是你想用PIL做的。请注意,我使用的测试图像是您问题中的图像,它是RGB图像,而不是灰度图像,因此转换后的图像也是如此。如果在调整图像大小之前将其转换为灰度,图像会小得多(PIL也可以轻松做到这一点)

代码还假定图像是正方形的。但也可以扩展到处理任意大小,方法是在宽度和高度上独立遵循相同的模式

from PIL import Image


print_dpi = 300
print_size = 3.46  # Inches

filename = 'STM_topography.png'
new_filename = 'STM_topography_resized.png'

img = Image.open(filename)
print(f'{img.size=}')
width, height = img.size

new_size = int(print_dpi * print_size)
img = img.resize((new_size, new_size), resample=Image.BICUBIC)
# img.show()
img.save(new_filename, dpi=(print_dpi, print_dpi))

相关问题 更多 >

    热门问题