जब मैं पुस्तकालय के रूप में 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 के माध्यम से स्थापित किया गया है।

0
Lord Helmchen 15 पद 2020, 00:50
मैंने पैकेज को vcpkg install exiv2:x64-windows के साथ स्थापित किया। मैंने exiv2 [xmp] नामक एक और पैकेज खोजने के लिए थोड़ा गहरा खोला, जो xmp- समर्थन के साथ बनाया गया है। मुझे लगता है कि यह मेरी समस्या की व्याख्या करता है। संकलन में कुछ समय लगता है। मैं एक पल में वापस आऊंगा।
 – 
Lord Helmchen
15 पद 2020, 01:14

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप vcpkg के साथ exiv2 libaries का उपयोग करते हैं और XMP समर्थन की आवश्यकता है तो इसे इस तरह स्थापित करना सुनिश्चित करें कि xmp को कोष्ठक में न भूलें ...

vcpkg install exiv2[xmp]:x64-windows
0
Lord Helmchen 15 पद 2020, 01:17