Hi peeps
There seems no way of changing a photo's develop settings except via applying a develop preset. is this true.
I've found
photo:getDevelopSettings()
but sadly nothing to
"addDevelopSettings()"
John Spacey wrote:
There seems no way of changing a photo's develop settings except via applying a develop preset. is this true.
John - that is correct.
I often have a plugin delete, upon startup, all temporary presets used last time around for on-the-fly adjustments. Rather than letting them accumulate forever, or deleting them immediately after use.
Note: The preset name is what appears in the users's edit history list.
R
John Spacey wrote:
Oh well, a bit messy. I'm just writing a plug to change Noise Reduction values based upon the ISO of the photo. Creating 28 dev presets for ISO80 to ISO51200 was tedious
I know what you mean, on both counts.
In case you want to avoid writing yourself, you may be able to use my CollectionPreseter for that, or JF's Bulk Develop plugin.
Rob
Hi,
I think Rob was suggesting that either his or Jeffrey's plugin might
satisfy your need so you wouldn't need to bother writing a plugin at all.
Alternatively check out Rob's source if you want to see how others have
tackled the problem in code. I expect you'll either need to use his
framework with your plugin or translate from it to pure Lua/LR SDK to reuse
the code, but it should give you an idea what is going on.
FYI Jeffrey and I discussed this a while back and he uses the same basic
technique discussed here so you aren't losing anything by not being able to
check out his encrypted code.
Thanks, Matt
(Apologies for the brevity - sent from my Android)
Hi Matt.
yes understood thanks
- I cracked it by interrogating each photo for it's ISO value and using a series of of if then statements to apply the relevant Dev Preset.
I still don't understand why we aren't allowed to change a develop value without having to go through a preset route. I wodner if Adobe can explain the reason?
John Spacey wrote:
I wonder if Adobe can explain the reason?
I'm sure they could, and doubt they will (what was the date of the last Adobe response on this forum? - hint: it wasn't in 2012).
My guess: it was easier to wire plugins up to the preset mechanism than the develop slider handlers...
Obviously, they could have used preset mechanism under the hood, and still supported methods like "change this setting or that", but I'm glad they didn't, since now it's clear - you need to roll develop settings into a package that will be handled as a preset, and it will block for catalog access...
Cheers,
Rob
Hi,
John Spacey wrote:
I wonder if Adobe can explain the reason?
I think the simplest explanation here is contained in the API Reference entry for photo:getDevelopSettings();
WARNING:The develop settings APIs are considered experimental. You should not depend on the contents of the settings table remaining compatible in future versions of Lightroom. The definitive list is the one shown in the UI.
My interpretation: they chose to release the develop APIs because people wanted them, even though the APIs weren't as complete as they would have liked. So the APIs are known to have rough edges but I'd rather have something than nothing.
Rob, I think there is something in what you say about this being a more efficient way to balance the ability to modify develop settings and blocking catalog access.
Thanks,
Matt
I did note the 'warning' in the API reference which says "
WARNING:The develop settings APIs are considered experimental. You should not depend on the contents of the settings table remaining compatible in future versions of Lightroom"
I interpreted this as saying that the develop settings may not be compatible with future versions of lightroom. Which looking at the differences in develop settings available between PV2010 and PV 2012 this makes perfect sense. e.g Obvisouly no point in applying a Fill Light setting to a PV2012 process.
I can't see how that "Warning" would explain why there isn't a setDevelopSettings() function though. We can obvisouly change develop settings so the possible changing list of develop parameters as warned about isn't a block to that, we are just restricted to channelling settings through a develop preset.
Also AFAIC see the list of develop settings we can change via a develop preset is ciomplete for each Process Version
I wonder if there's an adobe employee who we could ask about this?
John Spacey wrote:
I can't see how that "Warning" would explain why there isn't a setDevelopSettings() function though. We can obvisouly change develop settings so the possible changing list of develop parameters as warned about isn't a block to that, we are just restricted to channelling settings through a develop preset.
Directly explain it? No. The point I was trying to make was the Develop Settings APIs are considered experimental. I'm pretty sure they are the only part of the SDK marked as such. The design for them isn't 100% complete/finalised or they wouldn't have been marked as such. An incomplete/yet-to-be-finalised design could easily explain why an SDK function you'd expect to be there isn't.
John Spacey wrote:
Also AFAIC see the list of develop settings we can change via a develop preset is ciomplete for each Process Version
I wonder if there's an adobe employee who we could ask about this?
To be clear, you are saying the list of develop settings you can change is incomplete for the various Process Versions? Have you tried the missing ones and they don't work, or is it just that the doco doesn't mention them? I'm hoping its just a doco issue as that would be much easier for them to fix.
Rob has already started a list of missing settings that can't be written. If you could add your observations to the list it would be appreciated. Then we can try to find out whether this is a doco issue, bug, or design limitation.
Matt
Hi Rob,
Rob Cole wrote:
Missing (for writing):
Thanks for starting the list.
Are these items missing from the doco but work anyway, missing from the doco and don't work, or are present in the doco and don't work? Trying to work out how this gap is likely to be classified (bug, feature, or ?).
Matt
Not sure about doc (since Adobe said doc is not bottom-line, I wasn't really using it) - but they are the ones I remember that don't work.
Background: once upon a time I was trying to figure out if it would be possible to save settings and restore them, e.g. virtual copy. These were ones that could not be restored to a photo, thus a photo could not be recreated, dev-wise from it's saved settings.
Also, I have dev adjustment plugins that turned up these dev-settings as non-adjustable.
Cheers,
Rob
John Spacey wrote:
I haven't had chance to try them all yet, but I was assuming that if you could store the dev setting in a dev preset, then callign a dev preset via plugin code then you could apply it to a photo?
I didn't follow that. I mean most dev settings can be applied as you've described, but a few are ineffective (the ones I mentioned, at least).
?
I was assuming that if a develop setting can be written to a preset ( in LR itself ) then a plugin can also apply these settings as it can call a Dev preset.
btw
- I just noticed your small list above ....
ToneCurveEnable
Crop settings
Orientation
Would adobe class orientation as specifically a develop setting? Crop settings should be, but then they can't be applied in a Dev Preset.
John Spacey wrote:
I was assuming that if a develop setting can be written to a preset ( in LR itself ) then a plugin can also apply these settings as it can call a Dev preset.
I assume that as well, although I haven't verified all cases. You can't enable/disable sections using reglar presets, but they can be set in preset applied by plugin. Actually, it wouldn't surprise me if it could be done using a hand-edited preset too, but haven't checked (there is no UI for it, in any case).
Crop settings are clearly not settable in reglar preset: many forum posts requesting it.
Orientation could be handled like a dev adjustment but isn't.
Thanks,
Rob
Rob Cole wrote:
John Spacey wrote:
I was assuming that if a develop setting can be written to a preset ( in LR itself ) then a plugin can also apply these settings as it can call a Dev preset.
I assume that as well, although I haven't verified all cases. You can't enable/disable sections using reglar presets, but they can be set in preset applied by plugin. Actually, it wouldn't surprise me if it could be done using a hand-edited preset too, but haven't checked (there is no UI for it, in any case).
Crop settings are clearly not settable in reglar preset: many forum posts requesting it.
Orientation could be handled like a dev adjustment but isn't.
Thanks,
Rob
Unless I'm misinterpreting what you mean by enable/disable these parameters enable or disable dewvelop sections in a regular Dev Preset
| EnableCalibration = false, | |||
| EnableColorAdjustments = false, | |||
| EnableDetail = false, | |||
| EnableEffects = false, | |||
| EnableLensCorrections = false, | |||
| EnableSplitToning = false, | |||
| EnableToneCurve = false, |
I remembered this as I'd recently created a Develop Preset to apply on import which switched off most sections.
Hi,
John Spacey wrote:
I was assuming that if a develop setting can be written to a preset ( in LR itself ) then a plugin can also apply these settings as it can call a Dev preset.
Sounds like a reasonable assumption. But given Rob's feedback on what doesn't work, it seems the values accessible via a preset:getSetting() call might be a more accurate view of what can be set. Assuming you extrapolate and add the PV2012 equivalents to that list. I'm sure PV2012 support would have made it into the applyDevelopPreset() functionality but that part of the API Ref doesn't reflect this.
John Spacey wrote:
- I just noticed your small list above ....
ToneCurveEnable
Crop settings
Orientation
Would adobe class orientation as specifically a develop setting? Crop settings should be, but then they can't be applied in a Dev Preset.
I'm pretty sure orientation is treated as a metadata item rather than a develop setting. This would also contribute to the rotate feature not working for videos.
The other two aren't listed in the fields supported by preset:getSetting() so it would seem their absence is by design.
Matt
North America
Europe, Middle East and Africa
Asia Pacific