I was wondering if we could expand the support for custom IPTC fields. News agencies and editing software often override existing fields or use additional IPTC records for many purposes, i.e. "original filename" (from photographer) or "negative number" (scanned photos). I personally use up to 40 of these custom records. Until now, I was using either my custom IPTC library or ExifTool with custom configuration. Magick seems to work really well in .NET applications and the only problem is how it handles these non-standard IPTC.
Let's say we have a picture that has these 7 IPTC records:
2.5 (0x05 title),
2.80 (0x50 by-line),
2.120 (0x78 caption),
2.183 (0xB7 FotoWare character encoding),
2.215 (0xD7 CustomField16),
2.222 (0xDE Custom-222),
2.224 (0xE0 Custom-224), 2.22
ImageMagick/Magick.NET does not recognize some of them. The non-standard fields that are not listed in IptcTag enum all have 0xFF tag, instead of appropriate one. Because of this, after being edited by Magick.NET they are not recognized by other software. This is how IptcProfile looks after opening such file:
This sample image was edited by FotoWare FotoStation and can be downloaded from: here (for the above example I have deleted one IPTC tag 2.240, added by default by FotoStation). Also this entire question is strictly about IPTC, not XMP.
Let's say we have a picture that has these 7 IPTC records:
2.5 (0x05 title),
2.80 (0x50 by-line),
2.120 (0x78 caption),
2.183 (0xB7 FotoWare character encoding),
2.215 (0xD7 CustomField16),
2.222 (0xDE Custom-222),
2.224 (0xE0 Custom-224), 2.22
ImageMagick/Magick.NET does not recognize some of them. The non-standard fields that are not listed in IptcTag enum all have 0xFF tag, instead of appropriate one. Because of this, after being edited by Magick.NET they are not recognized by other software. This is how IptcProfile looks after opening such file:
1C 02 00 00 02 00 02
1C 02 05 00 05 74 69 74 6C 65
1C 02 50 00 06 61 75 74 68 6F 72
1C 02 78 00 07 63 61 70 74 69 6F 6E
1C 02 FF 00 07 43 50 5F 31 32 35 30 <-- should be 0xB7
1C 02 D7 00 07 67 61 6C 6C 65 72 79
1C 02 FF 00 02 6E 6F <-- should be 0xDE
1C 02 FF 00 0D 6F 72 69 67 69 6E 61 6C 20 6E 61 6D 65 <-- should be 0xE0
Perhaps it would be enough to add all missing IptcTag enum values, like: IptcTag183 = 183, IptcTag224 = 224 etc. up until 254. Even if these records are not in IPTC standard, it would allow other applications to read files modified by Magick.NET. At this moment it's impossible to integrate apps with Magick.NET into our workflow because of this.This sample image was edited by FotoWare FotoStation and can be downloaded from: here (for the above example I have deleted one IPTC tag 2.240, added by default by FotoStation). Also this entire question is strictly about IPTC, not XMP.