本文整理汇总了C++中exiv2::iptcdata::iterator::count方法的典型用法代码示例。如果您正苦于以下问题:C++ iterator::count方法的具体用法?C++ iterator::count怎么用?C++ iterator::count使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类exiv2::iptcdata::iterator
的用法示例。
在下文中一共展示了iterator::count方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: g_bytes_new_take
GBytes* gexiv2_metadata_get_iptc_tag_raw (GExiv2Metadata *self, const gchar* tag) {
g_return_val_if_fail(GEXIV2_IS_METADATA (self), NULL);
g_return_val_if_fail(tag != NULL, NULL);
g_return_val_if_fail(self->priv->image.get() != NULL, NULL);
Exiv2::IptcData& iptc_data = self->priv->image->iptcData();
try {
Exiv2::IptcData::iterator it = iptc_data.findKey(Exiv2::IptcKey(tag));
while (it != iptc_data.end() && it->count() == 0)
it++;
if (it != iptc_data.end()) {
long size = it->size();
if( size > 0 ) {
gpointer data = g_malloc(size);
it->copy((Exiv2::byte*)data, Exiv2::invalidByteOrder);
return g_bytes_new_take(data, size);
}
}
} catch (Exiv2::Error& e) {
LOG_ERROR(e);
}
return NULL;
}
示例2: gexiv2_metadata_has_iptc_tag
gboolean gexiv2_metadata_has_iptc_tag(GExiv2Metadata *self, const gchar* tag) {
g_return_val_if_fail(GEXIV2_IS_METADATA(self), FALSE);
g_return_val_if_fail(tag != NULL, FALSE);
g_return_val_if_fail(self->priv->image.get() != NULL, FALSE);
Exiv2::IptcData &iptc_data = self->priv->image->iptcData();
for (Exiv2::IptcData::iterator it = iptc_data.begin(); it != iptc_data.end(); ++it) {
if (it->count() > 0 && g_ascii_strcasecmp(tag, it->key().c_str()) == 0)
return TRUE;
}
return FALSE;
}
示例3: g_strdup
gchar* gexiv2_metadata_get_iptc_tag_string (GExiv2Metadata *self, const gchar* tag) {
g_return_val_if_fail(GEXIV2_IS_METADATA (self), NULL);
g_return_val_if_fail(tag != NULL, NULL);
g_return_val_if_fail(self->priv->image.get() != NULL, NULL);
Exiv2::IptcData& iptc_data = self->priv->image->iptcData();
try {
Exiv2::IptcData::iterator it = iptc_data.findKey(Exiv2::IptcKey(tag));
while (it != iptc_data.end() && it->count() == 0)
it++;
if (it != iptc_data.end())
return g_strdup (it->toString ().c_str ());
} catch (Exiv2::Error& e) {
LOG_ERROR(e);
}
return NULL;
}
示例4: gexiv2_metadata_clear_iptc_tag
gboolean gexiv2_metadata_clear_iptc_tag(GExiv2Metadata *self, const gchar* tag) {
g_return_val_if_fail(GEXIV2_IS_METADATA(self), FALSE);
g_return_val_if_fail(tag != NULL, FALSE);
g_return_val_if_fail(self->priv->image.get() != NULL, FALSE);
Exiv2::IptcData &iptc_data = self->priv->image->iptcData();
gboolean erased = FALSE;
Exiv2::IptcData::iterator it = iptc_data.begin();
while (it != iptc_data.end()) {
if (it->count() > 0 && g_ascii_strcasecmp(tag, it->key().c_str()) == 0) {
it = iptc_data.erase(it);
erased = TRUE;
} else {
it++;
}
}
return erased;
}
示例5: main
int main(int argc, char* const argv[])
try {
if (argc != 2) {
std::cout << "Usage: " << argv[0] << " file\n";
return 1;
}
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]);
assert (image.get() != 0);
image->readMetadata();
Exiv2::IptcData &iptcData = image->iptcData();
if (iptcData.empty()) {
std::string error(argv[1]);
error += ": No IPTC data found in the file";
throw Exiv2::Error(1, error);
}
Exiv2::IptcData::iterator end = iptcData.end();
for (Exiv2::IptcData::iterator md = iptcData.begin(); md != end; ++md) {
std::cout << std::setw(44) << std::setfill(' ') << std::left
<< md->key() << " "
<< "0x" << std::setw(4) << std::setfill('0') << std::right
<< std::hex << md->tag() << " "
<< std::setw(9) << std::setfill(' ') << std::left
<< md->typeName() << " "
<< std::dec << std::setw(3)
<< std::setfill(' ') << std::right
<< md->count() << " "
<< std::dec << md->value()
<< std::endl;
}
return 0;
}
catch (Exiv2::AnyError& e) {
std::cout << "Caught Exiv2 exception '" << e << "'\n";
return -1;
}