本文整理汇总了C++中KPMetadata::save方法的典型用法代码示例。如果您正苦于以下问题:C++ KPMetadata::save方法的具体用法?C++ KPMetadata::save怎么用?C++ KPMetadata::save使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KPMetadata
的用法示例。
在下文中一共展示了KPMetadata::save方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: apply
void XMPEditWidget::apply()
{
if (d->modified && !d->isReadOnly)
{
KPImageInfo info(*d->dlg->currentItem());
if (d->contentPage->syncHOSTCommentIsChecked())
{
info.setDescription(d->contentPage->getXMPCaption());
}
d->contentPage->applyMetadata(d->exifData, d->xmpData);
if (d->originPage->syncHOSTDateIsChecked())
{
info.setDate(d->originPage->getXMPCreationDate());
}
d->originPage->applyMetadata(d->exifData, d->xmpData);
d->subjectsPage->applyMetadata(d->xmpData);
d->keywordsPage->applyMetadata(d->xmpData);
d->categoriesPage->applyMetadata(d->xmpData);
d->creditsPage->applyMetadata(d->xmpData);
d->statusPage->applyMetadata(d->xmpData);
d->propertiesPage->applyMetadata(d->xmpData);
KPMetadata meta;
meta.load((*d->dlg->currentItem()).path());
meta.setExif(d->exifData);
meta.setIptc(d->iptcData);
meta.setXmp(d->xmpData);
meta.save((*d->dlg->currentItem()).path());
d->modified = false;
}
}
示例2: prepareImageForUpload
bool SwWindow::prepareImageForUpload(const QString& imgPath, bool isRAW, QString& caption)
{
QImage image;
if (isRAW)
{
qCDebug(KIPIPLUGINS_LOG) << "Get RAW preview " << imgPath;
KDcraw::loadRawPreview(image, imgPath);
}
else
{
image.load(imgPath);
}
if (image.isNull())
return false;
// get temporary file name
m_tmpPath = m_tmpDir + QFileInfo(imgPath).baseName().trimmed() + QString(".jpg");
// rescale image if requested
int maxDim = m_widget->m_dimensionSpB->value();
if (m_widget->m_resizeChB->isChecked() && (image.width() > maxDim || image.height() > maxDim))
{
qCDebug(KIPIPLUGINS_LOG) << "Resizing to " << maxDim;
image = image.scaled(maxDim, maxDim, Qt::KeepAspectRatio,
Qt::SmoothTransformation);
}
qCDebug(KIPIPLUGINS_LOG) << "Saving to temp file: " << m_tmpPath;
image.save(m_tmpPath, "JPEG", m_widget->m_imageQualitySpB->value());
// copy meta data to temporary image
KPMetadata meta;
if (meta.load(imgPath))
{
caption = getImageCaption(meta);
meta.setImageDimensions(image.size());
meta.setImageProgramId("Kipi-plugins", kipiplugins_version);
meta.save(m_tmpPath);
}
else
{
caption.clear();
}
return true;
}
示例3: prepareImageForUpload
bool WMWindow::prepareImageForUpload(const QString& imgPath, QString& caption)
{
QImage image;
image.load(imgPath);
if (image.isNull())
{
return false;
}
// get temporary file name
m_tmpPath = m_tmpDir + QFileInfo(imgPath).baseName().trimmed() + ".jpg";
// rescale image if requested
int maxDim = m_widget->dimension();
if (image.width() > maxDim || image.height() > maxDim)
{
kDebug() << "Resizing to " << maxDim;
image = image.scaled(maxDim, maxDim, Qt::KeepAspectRatio,
Qt::SmoothTransformation);
}
kDebug() << "Saving to temp file: " << m_tmpPath;
image.save(m_tmpPath, "JPEG", m_widget->quality());
// copy meta data to temporary image
KPMetadata meta;
if (meta.load(imgPath))
{
caption = getImageCaption(imgPath);
meta.setImageDimensions(image.size());
meta.save(m_tmpPath);
}
else
{
caption.clear();
}
return true;
}
示例4: addPhoto
bool PiwigoTalker::addPhoto(int albumId,
const QString& photoPath,
bool rescale,
int maxWidth,
int maxHeight,
int thumbDim)
{
KUrl photoUrl = KUrl(photoPath);
m_job = 0;
m_state = GE_CHECKPHOTOEXIST;
m_talker_buffer.resize(0);
m_path = photoPath;
m_albumId = albumId;
m_md5sum = computeMD5Sum(photoPath);
if (!rescale)
{
m_hqpath = photoPath;
kDebug() << "Download HQ version: " << m_hqpath;
}
else
{
m_hqpath = "";
}
kDebug() << photoPath << " " << m_md5sum.toHex();
QImage image;
// Check if RAW file.
if (KPMetadata::isRawFile(photoPath))
KDcrawIface::KDcraw::loadDcrawPreview(image, photoPath);
else
image.load(photoPath);
if (!image.isNull())
{
QFileInfo fi(photoPath);
QImage thumbnail = image.scaled(thumbDim, thumbDim, Qt::KeepAspectRatio, Qt::SmoothTransformation);
m_thumbpath = KStandardDirs::locateLocal("tmp", "thumb-" + KUrl(photoPath).fileName());
thumbnail.save(m_thumbpath, "JPEG", 95);
kDebug() << "Thumbnail to temp file: " << m_thumbpath ;
// image file - see if we need to rescale it
if (image.width() > maxWidth || image.height() > maxHeight)
{
image = image.scaled(maxWidth, maxHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
}
m_path = KStandardDirs::locateLocal("tmp", KUrl(photoPath).fileName());
image.save(m_path, "JPEG", 95);
kDebug() << "Resizing and saving to temp file: " << m_path ;
// Complete name and comment for summary sending
m_title = fi.completeBaseName();
m_comment = "";
m_author = "";
m_date = fi.created();
// Look in the Digikam database
KPImageInfo info(photoUrl);
if (info.hasTitle() && !info.title().isEmpty())
m_title = info.title();
if (info.hasDescription() && !info.description().isEmpty())
m_comment = info.description();
if (info.hasCreators() && !info.creators().isEmpty())
m_author = info.creators().join(" / ");
if (info.hasDate())
m_date = info.date();
kDebug() << "Title: " << m_title;
kDebug() << "Comment: " << m_comment;
kDebug() << "Author: " << m_author;
kDebug() << "Date: " << m_date;
// Restore all metadata with EXIF
// in the resized version
KPMetadata meta;
if (meta.load(photoPath))
{
meta.setImageProgramId(QString("Kipi-plugins"), QString(kipiplugins_version));
meta.setImageDimensions(image.size());
meta.save(m_path);
}
else
{
kDebug() << "Image " << photoPath << " has no exif data";
}
}
else
{
// Invalid image
return false;
}
QStringList qsl;
//.........这里部分代码省略.........
示例5: addPhoto
bool PiwigoTalker::addPhoto(int albumId,
const QString& mediaPath,
bool rescale,
int maxWidth,
int maxHeight,
int quality)
{
KUrl mediaUrl = KUrl(mediaPath);
m_job = 0;
m_state = GE_CHECKPHOTOEXIST;
m_talker_buffer.resize(0);
m_path = mediaPath; // By default, m_path contains the original file
m_tmpPath = ""; // By default, no temporary file (except with rescaling)
m_albumId = albumId;
m_md5sum = computeMD5Sum(mediaPath);
kDebug() << mediaPath << " " << m_md5sum.toHex();
if (mediaPath.endsWith(".mp4") || mediaPath.endsWith(".MP4") ||
mediaPath.endsWith(".ogg") || mediaPath.endsWith(".OGG") ||
mediaPath.endsWith(".webm") || mediaPath.endsWith(".WEBM")) {
// Video management
// Nothing to do
} else {
// Image management
QImage image;
// Check if RAW file.
if (KPMetadata::isRawFile(mediaPath))
KDcrawIface::KDcraw::loadRawPreview(image, mediaPath);
else
image.load(mediaPath);
if (image.isNull())
{
// Invalid image
return false;
}
if (!rescale)
{
kDebug() << "Upload the original version: " << m_path;
} else {
// Rescale the image
if (image.width() > maxWidth || image.height() > maxHeight)
{
image = image.scaled(maxWidth, maxHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
}
m_path = m_tmpPath = KStandardDirs::locateLocal("tmp", KUrl(mediaPath).fileName());
image.save(m_path, "JPEG", quality);
kDebug() << "Upload a resized version: " << m_path ;
// Restore all metadata with EXIF
// in the resized version
KPMetadata meta;
if (meta.load(mediaPath))
{
meta.setImageProgramId(QString("Kipi-plugins"), QString(kipiplugins_version));
meta.setImageDimensions(image.size());
meta.save(m_path);
}
else
{
kDebug() << "Image " << mediaPath << " has no exif data";
}
}
}
// Metadata management
// Complete name and comment for summary sending
QFileInfo fi(mediaPath);
m_title = fi.completeBaseName();
m_comment = "";
m_author = "";
m_date = fi.created();
// Look in the Digikam database
KPImageInfo info(mediaUrl);
if (info.hasTitle() && !info.title().isEmpty())
m_title = info.title();
if (info.hasDescription() && !info.description().isEmpty())
m_comment = info.description();
if (info.hasCreators() && !info.creators().isEmpty())
m_author = info.creators().join(" / ");
if (info.hasDate())
m_date = info.date();
kDebug() << "Title: " << m_title;
kDebug() << "Comment: " << m_comment;
kDebug() << "Author: " << m_author;
//.........这里部分代码省略.........
示例6: run
void Task::run()
{
if (d->cancel) return;
QDateTime dt = d->itemsMap.value(d->url);
if (!dt.isValid()) return;
emit signalProcessStarted(d->url);
bool metadataChanged = d->settings.updEXIFModDate || d->settings.updEXIFOriDate ||
d->settings.updEXIFDigDate || d->settings.updEXIFThmDate ||
d->settings.updIPTCDate || d->settings.updXMPDate;
int status = MyImageList::NOPROCESS_ERROR;
if (metadataChanged)
{
bool ret = true;
KPMetadata meta;
ret &= meta.load(d->url.path());
if (ret)
{
if (meta.canWriteExif(d->url.path()))
{
if (d->settings.updEXIFModDate)
{
ret &= meta.setExifTagString("Exif.Image.DateTime",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
}
if (d->settings.updEXIFOriDate)
{
ret &= meta.setExifTagString("Exif.Photo.DateTimeOriginal",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
}
if (d->settings.updEXIFDigDate)
{
ret &= meta.setExifTagString("Exif.Photo.DateTimeDigitized",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
}
if (d->settings.updEXIFThmDate)
{
ret &= meta.setExifTagString("Exif.Image.PreviewDateTime",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
}
}
else if (d->settings.updEXIFModDate || d->settings.updEXIFOriDate ||
d->settings.updEXIFDigDate || d->settings.updEXIFThmDate)
{
ret = false;
}
if (d->settings.updIPTCDate)
{
if (meta.canWriteIptc(d->url.path()))
{
ret &= meta.setIptcTagString("Iptc.Application2.DateCreated",
dt.date().toString(Qt::ISODate));
ret &= meta.setIptcTagString("Iptc.Application2.TimeCreated",
dt.time().toString(Qt::ISODate));
}
else
{
ret = false;
}
}
if (d->settings.updXMPDate)
{
if (meta.supportXmp() && meta.canWriteXmp(d->url.path()))
{
ret &= meta.setXmpTagString("Xmp.exif.DateTimeOriginal",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
ret &= meta.setXmpTagString("Xmp.photoshop.DateCreated",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
ret &= meta.setXmpTagString("Xmp.tiff.DateTime",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
ret &= meta.setXmpTagString("Xmp.xmp.CreateDate",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
ret &= meta.setXmpTagString("Xmp.xmp.MetadataDate",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
ret &= meta.setXmpTagString("Xmp.xmp.ModifyDate",
dt.toString(QString("yyyy:MM:dd hh:mm:ss")).toAscii());
}
else
{
ret = false;
}
}
ret &= meta.save(d->url.path());
if (!ret)
{
kDebug() << "Failed to update metadata in file " << d->url.fileName();
//.........这里部分代码省略.........
示例7: addPhoto
bool FlickrTalker::addPhoto(const QString& photoPath, const FPhotoInfo& info,
bool sendOriginal, bool rescale, int maxDim, int imageQuality)
{
if (m_job)
{
m_job->kill();
m_job = 0;
}
KUrl url(m_uploadUrl);
// We dont' want to modify url as such, we just used the KURL object for storing the query items.
KUrl url2("");
QString path = photoPath;
MPForm form;
form.addPair("auth_token", m_token, "text/plain");
url2.addQueryItem("auth_token", m_token);
form.addPair("api_key", m_apikey, "text/plain");
url2.addQueryItem("api_key", m_apikey);
QString ispublic = (info.is_public == 1) ? "1" : "0";
form.addPair("is_public", ispublic, "text/plain");
url2.addQueryItem("is_public", ispublic);
QString isfamily = (info.is_family == 1) ? "1" : "0";
form.addPair("is_family", isfamily, "text/plain");
url2.addQueryItem("is_family", isfamily);
QString isfriend = (info.is_friend == 1) ? "1" : "0";
form.addPair("is_friend", isfriend, "text/plain");
url2.addQueryItem("is_friend", isfriend);
QString safetyLevel = QString::number(static_cast<int>(info.safety_level));
form.addPair("safety_level", safetyLevel, "text/plain");
url2.addQueryItem("safety_level", safetyLevel);
QString contentType = QString::number(static_cast<int>(info.content_type));
form.addPair("content_type", contentType, "text/plain");
url2.addQueryItem("content_type", contentType);
QString tags = "\"" + info.tags.join("\" \"") + "\"";
if (tags.length() > 0)
{
form.addPair("tags", tags, "text/plain");
url2.addQueryItem("tags", tags);
}
if (!info.title.isEmpty())
{
form.addPair("title", info.title, "text/plain");
url2.addQueryItem("title", info.title);
}
if (!info.description.isEmpty())
{
form.addPair("description", info.description, "text/plain");
url2.addQueryItem("description", info.description);
}
QString md5 = getApiSig(m_secret, url2);
form.addPair("api_sig", md5, "text/plain");
QImage image;
// Check if RAW file.
if (KPMetadata::isRawFile(photoPath))
{
KDcrawIface::KDcraw::loadDcrawPreview(image, photoPath);
}
else
{
image.load(photoPath);
}
if (!image.isNull())
{
path = KStandardDirs::locateLocal("tmp", QFileInfo(photoPath).baseName().trimmed() + ".jpg");
if (sendOriginal)
{
QFile imgFile(photoPath);
imgFile.copy(path);
}
else
{
if (rescale && (image.width() > maxDim || image.height() > maxDim))
image = image.scaled(maxDim, maxDim, Qt::KeepAspectRatio,
Qt::SmoothTransformation);
image.save(path, "JPEG", imageQuality);
}
// Restore all metadata.
KPMetadata meta;
if (meta.load(photoPath))
{
//.........这里部分代码省略.........
示例8: addPhoto
bool DBTalker::addPhoto(const QString& imgPath, const QString& uploadFolder, bool rescale, int maxDim, int imageQuality)
{
if(m_job)
{
m_job->kill();
m_job = 0;
}
emit signalBusy(true);
MPForm form;
QString path = imgPath;
QImage image;
if(KPMetadata::isRawFile(imgPath))
{
KDcrawIface::KDcraw::loadRawPreview(image,imgPath);
}
else
{
image.load(imgPath);
}
if(image.isNull())
{
return false;
}
path = KStandardDirs::locateLocal("tmp",QFileInfo(imgPath).baseName().trimmed()+".jpg");
if(rescale && (image.width() > maxDim || image.height() > maxDim))
{
image = image.scaled(maxDim,maxDim,Qt::KeepAspectRatio,Qt::SmoothTransformation);
}
image.save(path,"JPEG",imageQuality);
KPMetadata meta;
if(meta.load(imgPath))
{
meta.setImageDimensions(image.size());
meta.setImageProgramId("Kipi-plugins",kipiplugins_version);
meta.save(path);
}
if(!form.addFile(path))
{
emit signalBusy(false);
return false;
}
QString uploadPath = uploadFolder + KUrl(imgPath).fileName();
QString m_url = QString("https://api-content.dropbox.com/1/files_put/dropbox/") + "/" +uploadPath;
KUrl url(m_url);
url.addQueryItem("oauth_consumer_key",m_oauth_consumer_key);
url.addQueryItem("oauth_nonce", nonce);
url.addQueryItem("oauth_signature",m_access_oauth_signature);
url.addQueryItem("oauth_signature_method",m_oauth_signature_method);
url.addQueryItem("oauth_timestamp", QString::number(timestamp));
url.addQueryItem("oauth_version",m_oauth_version);
url.addQueryItem("oauth_token",m_oauthToken);
url.addQueryItem("overwrite","false");
KIO::TransferJob* const job = KIO::http_post(url,form.formData(),KIO::HideProgressInfo);
job->addMetaData("content-type","Content-Type : application/x-www-form-urlencoded");
connect(job,SIGNAL(data(KIO::Job*,QByteArray)),
this,SLOT(data(KIO::Job*,QByteArray)));
connect(job,SIGNAL(result(KJob*)),
this,SLOT(slotResult(KJob*)));
m_state = DB_ADDPHOTO;
m_job = job;
m_buffer.resize(0);
emit signalBusy(true);
return true;
}