可利用irfanview内置功能与外部工具协同批量提取图片dpi等元数据:一、gui批量导出文本;二、命令行重定向输出;三、exiftool交叉验证;四、插件增强解析;五、powershell调用.net直取。

如果您需要从大量图片中批量提取元数据(如尺寸、格式、DPI、EXIF信息等),但手动逐张查看效率极低,则可利用 IrfanView 的内置功能与外部协同机制实现自动化信息采集。以下是实现此目标的多种可行路径:
一、使用IrfanView“批量转换”导出图像属性文本
该方法通过启用高级参数将每张图片的基础属性(含分辨率、位深度、色彩空间)导出为结构化文本文件,无需额外工具且完全在GUI内完成。
1、启动 IrfanView,点击菜单栏「文件」→「批量转换/重命名」。
2、点击「添加所有」按钮,选择包含目标图片的文件夹,支持 JPG、PNG、TIFF 等主流格式。
3、在「输出格式」下拉菜单中选择「Text file (image info)」。
4、勾选「使用高级选项(用于批量操作)」,点击右侧「高级」按钮。
5、在弹出窗口中,勾选「保存 EXIF/IPTC/Comment/XMP 信息」和「保存图像尺寸与 DPI 信息」两项。
6、设置输出路径,点击「开始批处理」,生成一个 .txt 文件,其中每张图片对应一段含 XResolution 和 YResolution(即 DPI 值) 的详细记录。
二、通过IrfanView命令行调用配合重定向输出
该方式适用于需集成至脚本或重复执行的场景,利用 IrfanView 的 CLI 模式直接读取单图信息并拼接为汇总列表,避免图形界面开销。
1、确保已安装 IrfanView 及插件包(尤其支持 RAW/HEIC 的元数据解析插件)。
2、新建一个空白文本文件,重命名为 extract_info.bat,用记事本打开。
3、输入以下内容(假设 IrfanView 安装于默认路径):
for %i in (*.jpg *.png *.tiff) do @"C:\Program Files\IrfanView\i_view32.exe" "%i" /info=info_all.txt /killmesoftly
4、保存后双击运行该批处理文件,将在当前目录生成 info_all.txt,其中每项记录均包含 Horizontal DPI 和 Vertical DPI 字段。
5、注意:首次运行前需关闭所有 IrfanView 实例,否则 /killmesoftly 参数可能失效。
三、结合 ExifTool 批量提取 DPI 并与 IrfanView 协同验证
ExifTool 是业界标准元数据提取工具,其输出精度高、字段完整,可弥补 IrfanView 对部分私有标签支持不足的问题,二者配合可交叉核验 DPI 数据可靠性。
1、从官网下载 exiftool.exe(https://exiftool.org/),解压至任意目录,例如 D:\tools\exiftool.exe。
2、按住 Shift 键右键点击图片所在文件夹,选择「在此处打开 PowerShell 窗口」。
3、输入命令:
exiftool -FileName -ImageWidth -ImageHeight -XResolution -YResolution -ResolutionUnit -FileType *.jpg > dpi_report.txt
4、执行完成后打开 dpi_report.txt,可见每张图片的 XResolution 和 YResolution 数值(单位为 dpi),且 ResolutionUnit 明确标注为「inches」。
5、将该报告与 IrfanView 导出的文本对比,若存在差异,优先采信 ExifTool 输出——因其直接读取原始 TIFF/EXIF 标头,而 IrfanView 在某些压缩 JPEG 中可能回退至默认 72 dpi。
四、启用IrfanView插件增强元数据解析能力
IrfanView 默认对部分相机厂商私有标签(如 Canon Makernotes、Nikon Variants)识别有限,安装专用插件后可在图像属性窗口中直接显示更完整的 DPI 相关字段。
1、访问官网 https://www.irfanview.com/plugins.htm 下载最新版 IrfanView Plugins 压缩包。
2、解压后运行 iv_plugins_XX.exe(XX 为版本号),勾选全部插件组件并完成安装。
3、重启 IrfanView,打开任意一张图片,按快捷键 I 或点击「信息」→「图像属性」。
4、在弹出窗口中切换至「EXIF」或「MakerNotes」标签页,查找字段名含 XResolution、YResolution、Resolution Unit 或 Print DPI 的条目。
5、若仍无显示,说明该图片未嵌入物理 DPI 信息,此时 IrfanView 显示的数值为软件内部默认值,不可作为真实打印依据。
五、使用 PowerShell 脚本调用 .NET 类库直取 DPI 属性
该方法绕过第三方工具依赖,纯系统级实现,适用于 Windows 环境下对安全性与可控性要求极高的批量信息采集任务。
1、新建文本文件,重命名为 get_dpi.ps1,右键编辑,粘贴以下代码:
$files = Get-ChildItem ".\" -Include "*.jpg","*.png","*.bmp"
foreach ($f in $files) {
$img = [System.Drawing.Image]::FromFile($f.FullName)
$dpiX = $img.HorizontalResolution
$dpiY = $img.VerticalResolution
Write-Output "$($f.Name), $dpiX, $dpiY"
$img.Dispose()
}
2、以管理员身份打开 PowerShell,执行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
3、运行脚本:
.\get_dpi.ps1 > dpi_output.csv
4、生成的 csv 文件中每行格式为「文件名, 水平DPI, 垂直DPI」,其中 HorizontalResolution 和 VerticalResolution 属性由 GDI+ 底层直接读取,精度与原始图像头一致。











