You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Lightroom Classic SDK技术问询:如何获取照片所属的LrFolder?

解决思路

核心方案是通过照片的路径字符串反向匹配Lightroom目录中对应的LrFolder对象,利用LR SDK提供的目录检索方法实现,具体步骤如下:

1. 提取照片所在文件夹的路径

首先通过photo:getRawMetadata('path')获取照片的完整磁盘路径,再用LR SDK内置的LrPathUtils工具提取其父文件夹路径(避免手动分割字符串出现跨平台路径格式问题):

-- 获取照片的完整文件路径
local photoFullPath = photo:getRawMetadata('path')
-- 提取照片所在的文件夹路径
local folderPath = LrPathUtils.parent(photoFullPath)

2. 查找对应的LrFolder对象

通过当前活跃目录的findFolderByPath()方法,直接传入文件夹路径即可得到对应的LrFolder实例,后续就能调用getParent()getChildren()等方法进行目录遍历操作:

-- 获取当前活跃的Lightroom目录
local catalog = LrApplication.activeCatalog()
-- 根据路径查找对应的LrFolder
local targetFolder = catalog:findFolderByPath(folderPath)

-- 验证是否找到文件夹并进行操作
if targetFolder then
    -- 获取父目录
    local parentFolder = targetFolder:getParent()
    -- 遍历子目录
    local childFolders = targetFolder:getChildren()
    -- 其他操作...
else
    -- 处理未找到对应文件夹的情况(比如照片未导入到目录中)
end

注意事项

  • findFolderByPath()方法要求传入的路径必须与Lightroom目录中记录的路径完全一致(包括大小写、路径分隔符,不过LrPathUtils处理后的路径会自动适配平台)
  • 如果照片是刚导入还未同步,或者路径已被修改但目录未更新,可能出现找不到文件夹的情况,需要额外处理这种异常场景

内容的提问来源于stack exchange,提问作者McKrassy

火山引擎 最新活动