使用updateExportSettings覆盖图像宽度

时间:2014-04-08 06:57:17

标签: plugins lua lightroom

我有cross posted on the Adobe Forums

编写我的第一个lightroom插件,我创建了一个minimal example,它应该设置照片宽度here并包含在下面。但是我无法将图像指定为400 x 400。

ExportFilterProvider400.lua:

local LrView = import 'LrView'
local bind   = LrView.bind
--------------------------------------------------------------------------------
-- This function will create the section displayed on the export dialog 
-- when this filter is added to the export session.

local function sectionForFilterInDialog( f, propertyTable )
  return {
    title = LOC "$$$/SDK/MetaExportFilter/SectionTitle=400x400 Filter",
  }
end

--------------------------------------------------------------------------------
-- Example on updating export settings
local function updateExportSettings( exportSettings ) 
  exportSettings.LR_size_maxHeight = 400
  exportSettings.LR_size_maxWidth  = 400
  exportSettings.LR_size_doConstrain = true
end

--------------------------------------------------------------------------------
return {
sectionForFilterInDialog = sectionForFilterInDialog,
updateExportSettings     = updateExportSettings    , --Does this work
}

Info.lua:

return {
  LrSdkVersion        = 3.0,
  LrSdkMinimumVersion = 1.3, 
  LrPluginName        = "400x400 Export",
  LrToolkitIdentifier = 'sample.export400x400',

  LrExportFilterProvider = {
    title = LOC "$$$/SDK/MetaExportFilter/Sample=400x400 Size", -- the string that appears in the export filter section of the export dialog in LR
    file  = 'ExportFilterProvider400.lua', -- name of the file containing the filter definition script
    id    = "metadata1",  -- unique identifier for export filter
  },

  VERSION = { major=5, minor=0, revision=0, build=907681, },
}

Adob​​e Lightroom可以加载插件,并将其添加到导出会话,但updateExportSettings似乎没有生效。在Lightroom 5.3中测试。

1 个答案:

答案 0 :(得分:0)

Adobe SDK论坛上的Rob Cole指出,updateExportSettings被出口服务提供商'}使用。预设导出设置。

'导出过滤器提供商'应使用renditionOptions作为postProcessRenderedPhotos的一部分。

经过一些试验和错误,我有这个最小的例子, Info.lua (无变化):

return {
  LrSdkVersion        = 3.0,
  LrSdkMinimumVersion = 1.3, -- minimum SDK version required by this plugin
  LrPluginName        = "400x400 Export",
  LrToolkitIdentifier = 'sample.export400x400',

  LrExportFilterProvider = {
    title = LOC "$$$/SDK/MetaExportFilter/Sample=400x400 Size", 
    file  = 'ExportFilterProvider400.lua', 
    id    = "metadata1",  -- unique identifier for export filter
  },
  VERSION = { major=5, minor=0, revision=0, build=907681, },
}

<强> ExportFilterProvider400.lua

local LrView = import 'LrView'
local bind   = LrView.bind

local function sectionForFilterInDialog( f, propertyTable )
  logger:info('Called sectionForFilterInDialog')
  return {
    title = LOC "$$$/SDK/MetaExportFilter/SectionTitle=400x400 Filter",
  }
end  

local function postProcessRenderedPhotos( functionContext, filterContext )  
  local renditionOptions = {
    filterSettings = function( renditionToSatisfy, exportSettings ) 
      exportSettings.LR_size_maxHeight = 400
      exportSettings.LR_size_maxWidth  = 400
      exportSettings.LR_size_doConstrain = true
    end
  }

  for sourceRendition, renditionToSatisfy in filterContext:renditions( renditionOptions ) do
    -- Wait for the upstream task to finish its work on this photo. 
    local success, pathOrMessage = sourceRendition:waitForRender()  
  end  
end
--------------------------------------------------------------------------------

return {
  sectionForFilterInDialog  = sectionForFilterInDialog,
  postProcessRenderedPhotos = postProcessRenderedPhotos,
}