जब मैं पुस्तकालय के रूप में exiv2 का उपयोग कर फ़ाइल में एक्सएमपी मेटाडेटा जोड़ने का प्रयास करता हूं तो यह बस टिकेगा नहीं। मेरे कोड को निष्पादित करने के बाद फ़ाइल को संशोधित किया गया था, लेकिन आकार में नहीं बदला है और इसमें कोई एक्सएमपी मेटाडेटा नहीं है। निम्नलिखित कोड मेरा टेस्टकेस है।
string fileName = "test.png";
vector<string> keyWords;
keyWords.push_back("keyword 1");
keyWords.push_back("keyword 2");
Exiv2::XmpParser::initialize();
image = Exiv2::ImageFactory::open(fileName);
assert(image.get() != 0);
assert(image->good());
image->readMetadata();
Exiv2::XmpData& xmpData = image->xmpData();
Exiv2::Value::AutoPtr subjects = Exiv2::Value::create(Exiv2::xmpBag);
for each (auto kw in keyWords)
subjects->read(kw);
xmpData.add(Exiv2::XmpKey("Xmp.dc.subject"), subjects.get());
image->writeMetadata();
मैंने प्रीकंपिल्ड कमांड लाइन टूल का उपयोग करके वही कोशिश की जो काम करता है।
exiv2 -v -k -m addxmp.txt mo test.png
File 1/1: test.png
Add Xmp.dc.subject "keyword1" (XmpBag)
मैंने मूल स्रोत के माध्यम से खोदा लेकिन कोई अंतर नहीं पाया। ऐसा क्या है जो मुझे दिखाई नहीं देता?
मैं विंडोज 10 पर वीएस2019 चला रहा हूं और यह एक सेमेक प्रोजेक्ट है जो वीसीपीकेजी के साथ इसकी निर्भरता का प्रबंधन करता है। exiv2 vcpkg के माध्यम से स्थापित किया गया है।
1 उत्तर
यदि आप vcpkg के साथ exiv2 libaries का उपयोग करते हैं और XMP समर्थन की आवश्यकता है तो इसे इस तरह स्थापित करना सुनिश्चित करें कि xmp को कोष्ठक में न भूलें ...
vcpkg install exiv2[xmp]:x64-windows
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।