首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为发布目的增加图像dpi

为发布目的增加图像dpi
EN

Stack Overflow用户
提问于 2021-08-15 07:38:56
回答 2查看 69关注 0票数 1

该图像是从Nanonis软件获取的,用于典型的STM (扫描隧道显微镜)形貌,因此图像像素由软件设置固定,始终为512 x 512像素。然而,为了发布的目的,我们经常需要通过一个自制的LabVIEW程序来校正图像背景(做一些像线性背景减法这样的事情)。

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

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

(可能是通过PIL包?不幸的是,我对这个不是很熟悉)这里有一个PNG图像样本:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-15 10:47:03

我认为这可以使用PIL实现您想要的效果。请注意,我使用的测试图像是您问题中的图像,它是RGB图像,而不是灰度图像,因此转换后的图像也是RGB图像。如果在调整大小之前将图像转换为灰度图像,则图像会小得多( PIL也可以很容易地做到这一点)。

代码还假设图像是正方形的。但是可以扩展,通过独立于宽度和高度遵循相同的模式来处理任意大小。

代码语言:javascript
运行
复制
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))
票数 1
EN

Stack Overflow用户

发布于 2021-08-15 08:38:52

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

代码语言:javascript
运行
复制
img.save(fn, dpi=(300,300))

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

更多信息here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68789584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档