Validierung ICC Farbprofile

Das cross platform CLI Tool "iccDumpProfile" aus der Toolsammlung DemoIccMAX der color.org liefert einen Validierungsreport mit der Option "-v" und findet aus erster Erfahrung die meisten Probleme in ICC-Profilen.

Buildanweisungen
# Git-Repo klonen
mkdir ICC && cd ICC
git clone https://github.com/InternationalColorConsortium/DemoIccMAX.git
cd DemoIccMAX/

# Abhängigkeiten installieren
sudo apt install libxml2-dev

# bauen
cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local -DUSE_SYSTEM_LIBXML2=ON ../Build/Cmake
make
make install

# iccDumpProfile aufrufen; Pfad zur shared library "libIccProfLib2.so.2" muss mit angegeben sein, sonst schlägt der Aufruf fehl
PATH=${PATH}:./IccProfLib/ Tools/IccDumpProfile/iccDumpProfile -v profile.icc
Beispielaufruf
$ iccDumpProfile -v AdobeRGB1998.icc 
Profile:            'AdobeRGB1998.icc'
Profile ID:         Profile ID not calculated.
Size:               560(0x230) bytes

Header
------
Attributes:         Reflective | Glossy
Cmm:                Adobe
Creation Date:      8/11/2000  19:51:59
Creator:            'ADBE' = 41444245
Data Color Space:   RgbData
Flags               EmbeddedProfileFalse | UseAnywhere
PCS Color Space:    XYZData
Platform:           Macintosh
Rendering Intent:   Perceptual
Profile Class:      DisplayClass
Profile SubClass:   Not Defined
Version:            2.10
Illuminant:         X=0.9642, Y=1.0000, Z=0.8249
Spectral PCS:       NoSpectralData
Spectral PCS Range: Not Defined
BiSpectral Range:   Not Defined
MCS Color Space:    Not Defined

Profile Tags
------------
                         Tag    ID      Offset	    Size	     Pad
                        ----  ------    ------	    ----	     ---
                copyrightTag  'cprt'       252	      50	       2
       profileDescriptionTag  'desc'       304	     107	       1
          mediaWhitePointTag  'wtpt'       412	      20	       0
          mediaBlackPointTag  'bkpt'       432	      20	       0
                   redTRCTag  'rTRC'       452	      14	       2
                 greenTRCTag  'gTRC'       468	      14	       2
                  blueTRCTag  'bTRC'       484	      14	       2
              redColorantTag  'rXYZ'       500	      20	       0
            greenColorantTag  'gXYZ'       520	      20	       0
             blueColorantTag  'bXYZ'       540	      20	       0


Validation Report
-----------------
Profile is valid

Validierung ICC Farbprofile in TIFFs

Für TIFFs prüft das Werkzeug "checkit_tiff" auch die Header des eingebetteten Farbprofils. (Warnung) Zur Zeit unterstützt checkit_tiff noch nicht ICCMax (kommt ggf. in Q1/2023).

Beispiel Ausgabe
$ ./checkit_tiff -c ../example_configs/cit_tiff6_baseline_SLUB.cfg ~/git/ValidateICC/testfiles/00000008.tif           
'./checkit_tiff' version: master_v1.3.2-2-g802f888
	revision: 791
licensed under conditions of libtiff (see http://libtiff.maptools.org/misc.html)
(enabled full ICC profile checking using IccProfLib by color.org)
(compiled with flags:  ALLOW_ICC1_2001_04 WITH_STRONG_ICC _HAVE_IccProfLib _HAVE_MMAP)
cfg_file=../example_configs/cit_tiff6_baseline_SLUB.cfg
tiff file/dir=/home/romeyke/git/ValidateICC/testfiles/00000008.tif
file: /home/romeyke/git/ValidateICC/testfiles/00000008.tif
(./)	general	--> TIFF should have just one IFD, (lineno: 12)
(./)	general	--> All tag offsets should be word aligned, (lineno: 14)
(./)	general	--> All offsets may only be used once, (lineno: 14)
(./)	general	--> All tag offsets should be greater than zero, (lineno: 14)
(./)	general	--> All IFDs should be word aligned, (lineno: 15)
(./)	general	--> Tags should be sorted in ascending order, (lineno: 15)
(./)	general	--> Cardinality of tags should be equal, (lineno: 15)
(./)	tag 256 (ImageWidth)	--> Tag should have a value in a range of (lineno: 23)
(./)	tag 257 (ImageLength)	--> Tag should have a value in a range of (lineno: 25)
(./)	tag 258 (BitsPerSample)	--> One or more conditions needs to be combined in a logical_or operation (open) (lineno: 32)
(./)	tag 259 (Compression)	--> Tag should have one exact value. (lineno: 36)
(./)	tag 262 (Photometric)	--> Tag should have a value in a range of (lineno: 40)
(./)	tag 273 (StripOffsets)	--> TIFF should contain this tag. (lineno: 45)
(./)	tag 277 (SamplesPerPixel)	--> Tag should have one exact value. (lineno: 50)
(./)	tag 278 (RowsPerStrip)	--> Tag should have a value in a range of (lineno: 55)
(./)	tag 279 (StripByteCounts)	--> TIFF should contain this tag. (lineno: 60)
(./)	tag 282 (XResolution)	--> Tag should have a value in a range of (lineno: 63)
(./)	tag 283 (YResolution)	--> Tag should have a value in a range of (lineno: 66)
(./)	tag 254 (SubFileType)	--> One or more conditions needs to be combined in a logical_or operation (open) (lineno: 74)
(./)	tag 266 (FillOrder)	--> Tag should have one exact value. (lineno: 94)
(./)	tag 274 (Orientation)	--> Tag should have one exact value. (lineno: 110)
(./)	tag 284 (PlanarConfig)	--> Tag should have one exact value. (lineno: 119)
(./)	tag 296 (ResolutionUnit)	--> Tag should have one exact value. (lineno: 138)
(./)	tag 305 (Software)	--> Tag should have a value that matches the RegEx, (lineno: 144)
(./)	tag 306 (DateTime)	--> DateTime tag should contain a valid value. (lineno: 148)
(EE)	tag 34675 (ICC Profile)	--> ICC profile should be valid, but ICC profile is totally invalid if checked with IccProfLib.; found: NonCompliant! - redColorantTag - Offset is not aligned on 4-byte boundary!
NonCompliant! - greenColorantTag - Offset is not aligned on 4-byte boundary!
NonCompliant! - blueColorantTag - Offset is not aligned on 4-byte boundary!
NonCompliant! - mediaWhitePointTag - Offset is not aligned on 4-byte boundary!
NonCompliant! - mediaBlackPointTag - Offset is not aligned on 4-byte boundary!
NonCompliant! - AToB0Tag - Offset is not aligned on 4-byte boundary!
NonCompliant! - AToB1Tag - Offset is no (lineno: 214)
(EE)Found 1 errors
(EE)No, the given tif is not valid :(

Farbprofile evaluieren

Für eine weitergehende Analyse kann man ff. Vorgehen wählen:

  • Mit dem Werkzeug "exiftool" das ICC-Profil extrahieren: 
    exiftool -icc_profile -b -w icc /tmp/kaputt.tiff
  • Keine Stichwörter