Inside Nikon image adjustments
THe Nikon image adjustments (aka. filters) are the following:
Adjustment parameters
An adjustment parameter is characterized by its name, its type, and its value.
Parameter type may be implicit or explicit. An explicit type is expressed by
a tag name (integer, double…) and within an attribute defining the
parameter name (name, id…). An implicit type is not specified, the
tag name only defines the parameter name.
<SelectedPictureControl>0</SelectedPictureControl>
<double name="rotateAngle">0</double>
Adjustment parameters type
binary: is a binary string encoded in Base64. The attributenamedefine the parameter name. (seems similar toExportparameters)<binary name="Data">AAAAAADI...AAAAAA</binary>
double: a decimal number or a double precision (64 bits) floating number. The attributenamedefine the parameter name.<double name="rotateAngle">0</double>
integer: a decimal number, a single precision (32 bits) floating number or a boolean value withtrueorfalse[1]. The attributenamedefine the parameter name.<integer name="autoCrop">0</integer>
dateAndTime: a date and time stamp expressed as a set of tags (year,month,day,hour,minuteandsecond). The date 1900-1-1 00:00:00 seems to be default value.<dateAndTime> <year>1900</year> <month>1</month> <day>1</day> <hour>0</hour> <minute>0</minute> <second>0</second> </dateAndTime>
points: a set of 2D coordinates expressed as a set of tagspointOfPointswith the attributesxandy. The attributenamedefine the parameter name.<points name="QuickFixToneCurve.pointsOut"> <pointOfPoints x="0" y="0"/> <pointOfPoints x="1" y="1"/> </points>
point: a 2D coordinates expressed as a set of attributes (xandy). The attributenamedefine the parameter name. Please note that data structure is not the same thanpointsabove.<point name="cropStart" x="991" y="546"/>
data: a text string. The attributeiddefine the parameter name.<data id="app:softname">Nikon Transfer 2.13 W</data>
The list below exposes particular cases of implicit adjustment parameters.
Export: a binary string expressed as a set of two elements:ExportDataandExportDataSize.ExportDatais a binary string encoded in Base64.ExportDataSizeis the length of the encoded string.<Export> <ExportData>TkNQAAAAAAEAAAA...AAA==</ExportData> <ExportDataSize>74</ExportDataSize> </Export>
map: similar toExportbut withmapDataandmapSizeas elements<map> <mapdata>rhn0ugeaaa.../qkpfvli</mapdata> <mapsize>174338</mapsize> </map>
historystep: an ordered list whose entries are tagged vithhistorystep. Each entry (aka. step) is an unitary image adjustment to apply to the image. For example, cropping an image should be done after image processing modifying the image size as lens correction or perspective controls).<historystep> <version>20</version> <feather>0</feather> ... <filter id="nik::AdaptivePaste"> ... </filter> </historystep> <historystep> <version>20</version> <feather>0</feather> ... <filter id="nik::Newton"> ... </filter> </historystep>
adjustmentData: an obscure data structure with one item namedNkOneStepAdjustmentexpressed as a boolean:<adjustmentData> <data id="NkOneStepAdjustment">true</data> </adjustmentData>
Notes