Lua脚本批量转换重命名图片文件

尝试通过在png转jpg的过程中使用lua脚本调用magick实现与平台无关的图片批量转换操作。

原因

工作需要经常需经inkspace生成尺寸、DPI严格规定限制的图片用于文档,且只接受jpg格式。而inkspace1.1版本导出jpg,DPI自动降为96*96(像素不变时,尺寸相对变大了,无法使用)。inkspace1.1导出png没有问题。

手段

计划通过inkspace导出png图片,使用magick实现图片参数不变的情况下,png转jpg。

由于win10命令行无法实现文件名的转换后的匹配,考虑在png转jpg的过程中使用lua脚本调用magick实现。

准备

  • 安装ImageMagick

  • 安装lua5.3并配置好luarocks

  • 使用luarcks安装luafilesystem模块

代码

local lfs = require"lfs"
local os = require"os"
local str = require"string"

function png2jpg(path)
	os.execute("mkdir convimg")
    for file in lfs.dir(path) do
        if file ~= "." and file ~= ".." and file ~="convimg" and file ~="file.lua" then
            local f = path..'/'..file
            local nf = str.gsub(file,".png",".jpg")
            local nfp = path..'/convimg/'..nf
            --print("\n"..file)
            --print("\n"..f)
            --print("\n"..nf)
            --print("\n"..nfp)
            local sign = os.execute("magick " .. f .." "..nfp)
        end
    end
end

png2jpg(".")

结果

文件树视图

.
├── 01-主视图.png
├── 02-后视图.png
├── 03-左视图.png
├── 04-右视图.png
├── 05-俯视图.png
├── 06-仰视图.png
├── 07-立体图.png
├── a.txt
├── convimg
│   ├── 01-主视图.jpg
│   ├── 02-后视图.jpg
│   ├── 03-左视图.jpg
│   ├── 04-右视图.jpg
│   ├── 05-俯视图.jpg
│   ├── 06-仰视图.jpg
│   └── 07-立体图.jpg
└── file.lua

内容声明与版权协议

  • 版权协议:本文采用 CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享) 协议进行许可。转载、演绎请务必保留作者署名及原文链接,且不得用于商业目的。
  • AI 辅助说明:本博客部分内容(如排版设计、个别局部、特定对话片段等)可能由 AI(LLM大语言模型)辅助生成。作者在此明确声明:本人对文章的核心框架、思想立论与最终呈现拥有绝对主导权与最终解释权。
  • 观点免责:文中明示的由 AI 生成的特定文本、对话输出,仅作为理性探讨以及观点展示,不代表本人真实立场、价值观或事实背书。对于因 AI 幻觉造成的客观事实偏差,请读者审慎甄别。
  • 认知时效性:文章仅代表作者在撰写当下的认知状态与情绪切片。随着个人心智迭代与客观事物发展,作者观点可能发生演变。欢迎基于理性的交流与批评。