0

I have cross posted on the Adobe Forums.

Writing my first lightroom plugin, I have created a minimal example which should set the photo width here and included below. However I can not get the image to be the 400 x 400 specified.

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, },
}

Adobe Lightroom can load the plugin, and add it to the export session, but the updateExportSettings do not seem to take effect. Tested in Lightroom 5.3.

4

1 回答 1

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,
}
于 2014-04-08T21:53:19.567 回答