logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

pecomato - a portable picture-embedded metadata processor

Author

       Written by Tristan Chabredier "wwp"<subscript@free.fr>.

Description

pecomato is basically designed to display any kind of information embedded in picture files, as  well  as
       checking,  filtering,  extracting,  removing,  adding and fixing such information. In other words, it's a
       metadata processor.

       It supports the following file formats: JPEG/JFIF, AdobePSD and FFO, raw IPTC.  And it knows  about  the
       following metadata formats: JFIF, IPTC, Exif, Adobe and Fotostation. More file and metadata formats might
       be supported later: TIFF, etc.

       One  of its main goals is to check the validity of parsed metadata as well as optionally check the strict
       compliance to official standards. On another hand, it aims to  provide  ways  of  fixing  broken  or  not
       compliant chunks as well as providing general basic functions to manipulate the metadata.

       Please  visit  the  program  homepage  at  http://www.mollux.org/projects/pecomato/. Thanks for reporting
       issues at https://www.mollux.org/services/bugzilla/.

Dump-Value Expressions

       IPTC.<record>

       same as filter include/exclude expression, see below:

Examples

CheckmetadatastructuresofaJPEGfile,onlyreporterrors
              $ pecomato check file.jpg

Exit Codes

0     normal exit

        1     usage error

        2     asynchronous signal termination

        3     normal exit, with warning(s)

        4     normal exit, with error(s)

        5     fatal error encountered

Filter Edit Expressions

       IPTC.<record>=<type>:<value>

       where <record> can be either:

       hexadecimal unary: 0xhhhh

       decimal unary:     nnn:nnn

       where <type> can be either:

       hex

       text

       and <value> is:

       hex:  [a-zA-Z0-9] pairs

       text: any char (even widechars) on the line is taken as text, until

             a newline is found

       examples:

       IPTC.0x0200=hex:0002

       IPTC.0x0219=text:this is a keyword

Filter Include/Exclude Expressions

       IPTC.<record>

       where <record> can be either:

       all:               *

       hexadecimal unary: 0xhhhh

       hexadecimal range: 0xhhhh-0xhhhh

       decimal unary:     nnn:nnn

       decimal ranges:    nnn:nnn-nnn

                          nnn:*

       examples:

       IPTC.0x0219

       IPTC.0x0300-0x0364

       IPTC.3:0-100

Name

       pecomato - a portable picture-embedded metadata processor

Options

generaloptions:-v, --version
              show version number then exit

        -h, --help
              show this usage help then exit

            --list
              list all supported embedded data structures

        -l, --log-levelNUM
              define verbosity (see possible values below)

        -c, --check-compliance
              perform full checks to test the strict validity and compliance of structures to official formats

       filteringandextractingoptions:-b, --backup
              create backup files of (re)written files if necessary

        -d, --target-dirDIRNAME
              target directory for all written files

        -f, --fix
              fix metadata inconsistencies when possible

       extractingoptions:-x, --extractTYPE
              extract and save metadata to a standalone file (see below for a list of metadata types that can be
              extracted)

        -t, --extEXTENSION
              define what filename extension to use when writing metadata that is extracted (default: .iptc)

        -a, --append-ext
              append extension to original  filename  when  saving  the  extracted  metadata  (default:  replace
              original file extension)

       filteringoptions:-i, --includeEXPR
              a filter expression describing the datasets to keep

        -i, --include@FILE
              or  a file containing a list of datasets to keep, all other datasets will be filtered out.  if not
              used, all datasets will be kept

        -e, --excludeEXPR
              a filter expression describing the datasets to filter out

        -e, --exclude@FILE
              a file containing a list of datasets to filter out, all other datasets will be kept. if  not  used
              all datasets will be kept

        --editEXPR
              a filter edit expression describing the datasets to add

        --edit@FILE
              or  a  file  containing  a  list  of  datasets  to add.  datasets won't be inserted if that breaks
              compliance to the standards

        --test
              don't override original file, create *.rewrite file.  this option only affects rewriting of source
              files

       dumpoptions:-w, --wrapNUM
              max column for wrapping (num must be in range [8-1024]). default is to dump unwrapped

Possible Log Levels

0     quiet, no output at all

        1     error messages only (default)

        2     warning and error messages

        3     informative, warning and error messages

        4     all messages including debug ones

Possible Ops

check just check embedded data structures

        dump  show embedded data (headers only)

        dump-full
              show all embedded data (including values)

        dump-value
              show requested value (headers only)

        filter
              filter embedded data (see -i, -e and --edit)

Supported Input Files

JPEG files (commonly .jpeg, .jpg, .jpe, .jfif, .jif)

        AdobePhotoshop files (commonly .psd, .pdd, .ffo)

        FotoStation files (commonly .fdp, .ipt)

        standalone IPTC metadata (commonly .iptc)

Supported Metadata For Extraction

iptc  IPTC datasets

Synopsis

pecomato [OPTION...] OP [EXPR] FILE [FILE...]

       pecomato [OPTION...] OP [EXPR] @FILE

       usage of form OPEXPR only concerns OP mode dump-value, see below.

       use  @file  to read a list of files from that file. the file must contain exactly one filename to process
       per line (don't escape anything, filenames are taken as-is).

See Also