Judging by the amount of requests of such a feature and the replies by the neatimage staff it seems that though there's quite a demand we won't see it implemented soon. Which is why I considered it worthy to write such a program myself instead of waiting (or more precisely, instead of processing hundreds of images manually).
A word of warning though: The program has not been tested thoroughly, so it may include some nasty bugs. Especially since I've used this project to make my transition from C++ code to C# and the .NET framework. However, so far it has worked very well, in fact the only major problem I've found is a messagebox opened by neatimage whenever it has finished processing a file which amounts to a LOT of these messageboxes when batch processing dozens of files. The easiest way to get rid of them is to simply keep the esc key pressed until there's no more of them left.
So far I've done little to create a decent documentation, so for now the help page output of the program (accessible by the commandline arguments --help or /?) will have to do.
Code: Select all
usage: nic.native [arguments]
hardcoded arguments:
--help help page
/? help page
--ahelp advanced help page
-fcfg "filename" configuration file, defaults to nic.xml
arguments defined in the configuration file:
-sf source_filter this filter is applied to each filename before
trying to find a matching configuration, e.g.
".*\.jpg$"
-fo output_filename overrides Output:output_filename
-ds source_directory source directory for images, subdirectories
are not included
-do output_directory output directory for processed images
-dpro profile_directory overrides Input:profile_directory
-dpre preset_directory overrides Input:preset_directory
-fpro profile_filename overrides Config:profile_filename
-fpre preset_filename overrides Config:preset_filename
-ei exif_inputfile overrides Input:exif_inputfile
-es exif_source overrides Input:exif_source, "db" or "int"
-cs camera_sharpening overrides Input:camera_sharpening, sets
in-camera sharpening which is not recorded as
exif tag, "-2", "-1", "0", "+1", "+2"
-d Prog:delay sets the delay after each file, in
milliseconds
-pn profile_num "1" for Sony F717 profile by Jay Philippbar,
"2" for Sony F717 profile by Tom Matty and
Chiang Mai
-t "[namespace:]attribute"="value" defines an attribute
arguments are case sensitiv
prefix may be '-' or '/'
configuration file format:
top level element "NIC"
element "CmdlArgs"
attribute "tagdef", commandline argument for defining tag's
e.g. to define a tag "proctag" with value "_NR"
tagdef="-t" -> nic.native -t proctag=_NR
child elements "Arg"
attribute "tag", commandline argument
attribute "attribute", target attribute
attribute "desc", optional description text
e.g. to add a switch for Prog:delay/>
<Arg tag="-d" attribute="Prog:delay" desc="sets delay"/>
element "Prog"
attribute "delay", delay after each file in milliseconds
attribute "commandline", path and executable filename
attribute "commandline_arguments", arguments passed to program
element "Input"
attribute "exif_source", exif data read from textfile if "db"
or by parsing image if "int"
attribute "exif_inputfile", specifies textfile, applies only if
"exif_source" set to "db"
attribute "exif_inputfile_delimiter", specifies field delimiter, applies
only if "exif_source" set to "db", format as regular expression
attribute "source_filter", this filter is applied to each filename before
trying to find a matching configuration, format as regular expression
e.g. to process only jpeg files use ".*\.jpg$"
element "Output"
attribute "output_filename", name of processed file
e.g. to specify "(source filename)(processed-tag)(file extension)
"%File:FileName%%proctag%.%File:FileExtension%"
this yields an output name of DSC05726_NR.JPG for source file
DSC05726.JPG and proctag="_NR"
attribute "log_message", program output for each processed file
element "ConfigDef"
attribute "name", configuration name
attribute "filter", this filter must match for this configuration
to be selected
format:
%TagName%,'regular_expression';...
(.+?),(.+?);
e.g. to filter by camera model and image width
"%Exif:Model%,cybershot;%Exif:Image width%,2560;"
the first-level elements may have 'Tag' child-elements to define tag's
all tag's may be defined as attribute or 'Tag' element
e.g. both of these two lines yield the same results
<Output delay="200"/>
<Output><Tag name="delay" default="200"/></Output>
tag's expand to either their "default" or "format" attribute which may itself
contain embedded tag's. tag's defined by "default" may be local (i.e. defined
within the same namespace) or external (i.e. defined in another namespace).
format:
%LocalTagName% or %NamespaceName:TagName%
(?:%([\w\s]+)%)|(?:%([\w\s]+):([\w\s]+)%)
tag's defined by 'Tag' elements support conditional formating by
specifying a "format" attribute instead of "default"
format:
%TagName%,'op''cmp'='val'
((?:%([\w\s]+)%)|(?:%([\w\s]+):([\w\s]+)%)),(.+)
where the last sub-expression contains the conditional phrase
format:
([=<>!]{1,2})(.+?)=(.*?)(?:\||$)
op: comparison operators for equality "==" and inequality "==" are performed
as string_type comparisons, the remaining ops less "<", greater ">", less than
"<=" and greater than ">=" are compared as two floating point numbers.
cmp: text that's compared to the expanded %TagName%
val: value that's assigned to the tag if the expression matches
cmp and val may be formated as fractions, e.g. 1/250
format:
(\d+(?:\.\d+)?)/(\d+(?:\.\d+)?)
e.g. to format a tag shspeed depending on the shutter speed
<Tag name="shspeed" format="%Exif:Shutter speed%,&1/25=30|&=1/25=25"/>
first-level element names become namespace names: 'CmdlArgs', 'Prog',
'Input', 'Output', (only first defined 'ConfigDef' is accessible)
matching 'ConfigDef' is mapped as namespace 'Config'
information about the currently processed file is mapped into 'File'
currently available 'File' tag's: 'FileName', 'FileExtension' (including .),
'FileSize' (in bytes), 'CreationDate', 'LastWriteTime'
meta-information about the currently processed image is mapped into 'Exif'
exif_source="int": not yet implemented
exif_source="db": the available tag's depend on the contents of the file
specified by exif_inputfile
these files are best created by BreezeBrowser which is available as trial
version at http://www.breezesys.com
tag's defined by commandline are added to top-level namespace 'Cmdl', i.e.
they override all tag's of same name defined in any other namespace
version: 0.11, build date: Jul 21 2003
for suggestions and bug reports send a mail to jamez@xover.mud.at
by Oliver Pons-Adrover, 2003
You can download the program and a sample configuration file here.
The program does NOT delete, overwrite or modify any files but merely passes the parameters to neatimage! Maybe the neatimage staff could take a look at the source code and verify that this program should not do any damage to your data. I say 'should' because naturally I can't guarantee this and therefore take no responsibility for any malfunction.
As always when you work on critical data, use common sense and create a backup of the original files.
That's it for now..
Please post any question into this thread so that everyone can benefit from the answers.
Greeting from Vienna, Oliver Pons-Adrover.
edit: help screen updated