2014-10-23 8 views
0

Есть ли ограничение в функциональности exiv2, которое мешает ему вставить тег 'Exif.SubImage1.OpcodeList3' в файл DNG?Поддержка вставки тегов Exiv2

Я пытаюсь скопировать этот тег из одного файла DNG в другой без успеха.

Мой исходный файл был напечатан: exiv2.exe -b -pa file.dng> output.txt

Файл output.txt содержит: Exif.SubImage1.OpcodeList3 Не определено 184 0 0 0 1 0 0 0 1 1 3 0 0 0 0 0 0 0 0 0 164 0 0 0 3 63 240 0 0 119 176 58 28 191 185 132 79 191 248 95 209 63 154 58 10 83 149 62 10 191 117 109 20 1 60 213 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 240 0 0 0 0 0 6 191 185 168 230 29 114 106 51 63 154 226 203 140 13 160 159 191 117 201 88 36 225 127 123 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 239 255 253 213 88 87 206 191 185 163 231 88 112 250 50 63 155 248 100 114 115 143 207 191 118 115 180 47 58 216 144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 223 227 192 112 254 60 7 63 224 0 0 0 0 0 0

Я пытаюсь добавить этот тег к другому DNG-файлу, который не имеет его (например) командного файла: add Exif.SubImage1.OpcodeList3 Undefined "0 0 0 1 0 0 0 1 1 3 0 0 0 0 0 0 0 0 0 164 0 0 0 3 63 240 0 0 119 176 58 28 191 185 132 79 191 248 95 209 63 154 58 10 83 149 62 10 191 117 109 20 1 60 213 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 240 0 0 0 0 0 6 191 185 168 230 29 114 106 51 63 154 226 203 140 13 160 159 191 117 201 88 36 225 127 123 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 239 255 253 213 88 87 206 191 185 163 231 88 112 250 50 63 155 248 100 114 115 143 207 191 118 115 180 47 58 216 144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 223 227 192 112 254 60 7 63 224 0 0 0 0 0 0 "

Но файл остается без изменений.

Я также пробовал такие вещи, как: добавить Exif.SubImage1.OpcodeList3 неопределен "0 0 0 1 0"

Но все же тег не добавляется. Я подозреваю, что exiv2 не поддерживает вставку этого тега.

Я делаю что-то неправильно или это не поддерживается?

ответ

0

Проблема решена: ответ here (относительно OpcodeList1) объясняет, почему такой тег не обрабатывается exiv2. Чтобы преодолеть это, я изменил tiffimage.cpp заменой:

 if ( pPrimaryGroups != 0 
      && !pPrimaryGroups->empty() 
      && group != ifd0Id) { 
#ifdef DEBUG 
      ExifKey key(tag, groupName(group)); 
      std::cerr << "Image tag: " << key << " (2)\n"; 
#endif 
      return true; 
     } 

с:

 if ( pPrimaryGroups != 0 
      && !pPrimaryGroups->empty() 
      && group != ifd0Id) { 

      bool opcode3 = tag == 0xc74e; 

#ifdef DEBUG 
      ExifKey key(tag, groupName(group)); 
      if (!opcode3) 
       std::cerr << "Image tag: " << key << " (2)\n"; 
      else 
       std::cerr << "Not an image tag: " << key << " (2)\n"; 
#endif 
      return !opcode3; 
     }