exiv2的功能是否有限制,无法将标记"Exif.SubImage1.OpcodeList3"插入DNG文件?
我正试图将这个标签从一个DNG文件复制到另一个,但没有成功。
我的源文件是使用以下方式打印的:exiv2.exe-b-pa file.dng>output.txt
文件output.txt包含:Exif.SubImage1.OpcodeList3未定义184 0 0 0 1 0 0 1 1 3 0 0 0 0零0 0 0 164 0 0 0 3 63 240 0 119 176 58 28 191 185 132 79 191 248 95 209 63 154 58 10 83 149 62 10 191 117 109 1 60 213 11 0 0 0255 253 213 88 87 206 191 185 163 231 88 112 250 50 63 155 248 100 114 143 207 191 118 180 47 58 216 144 0 0 0 0 00 0 0 0 3 223 227 192 112 254 60 7 63 224 0 0 0
我正试图通过(例如)命令文件将此标记添加到另一个没有它的DNG文件:添加Exif.SubImage1.OpcodeList3未定义"0 0 0 1 0 0 1 3 0 0 0 0 2 0 0 0 4 0 0 3 63 240 0 119 176 58 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 00 0 0 0了0 0 0 63 240 0 0 0 6 191 185 168 230 29 114 51 63 154 226 203 140 13 160 159 191 117 201 88 36 225 127 123 0 0 0.0 0 0 048 100 114 115 143 207 191 118 180 47 58 216 144 0 0 0 0 00 0 0 0.0 0 0 0 63 223 227 192 112 254 60 7 63 224 0 0 0
但该文件保持不变。
我也尝试过类似的东西:添加Exif.SubImage1.OpcodeList3未定义的"0 0 0 1 0"
但标签仍然没有添加。我怀疑exiv2不支持插入此标记。
我是做错了什么,还是没有得到支持?
问题解决了:这里的答案(关于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;
}