本文整理汇总了C++中KPMetadata::load方法的典型用法代码示例。如果您正苦于以下问题:C++ KPMetadata::load方法的具体用法?C++ KPMetadata::load怎么用?C++ KPMetadata::load使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KPMetadata
的用法示例。
在下文中一共展示了KPMetadata::load方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: setImage
bool ClockPhotoDialog::setImage(const KUrl& imageFile)
{
bool success = false;
if (d->imagePreview->load(imageFile.toLocalFile()))
{
// Try to read the datetime data.
KPMetadata meta;
if (meta.load(imageFile.toLocalFile()))
{
d->photoDateTime = meta.getImageDateTime();
if (d->photoDateTime.isValid())
{
// Set the datetime widget to the photo datetime.
d->calendar->setDateTime(d->photoDateTime);
d->calendar->setEnabled(true);
success = true;
}
else
{
// If datetime information couldn't be loaded, display a
// warning and disable the datetime widget.
QString warning = i18n("<font color=\"red\"><b>Could not "
"obtain<br>date and time information<br>"
"from image %1.</b></font>",
imageFile.fileName());
d->imagePreview->setText(warning);
}
}
}
else
{
// If the image couldn't be loaded, display a warning, disable all the
// GUI elements and load an empty photo into d->image.
QString warning = i18n("<font color=\"red\"><b>Could not load<br>"
"image %1.</b></font>",
imageFile.fileName());
d->imagePreview->setText(warning);
}
// Disable all the GUI elements if loading failed.
d->calendar->setEnabled(success);
return success;
}
示例4: 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;
}
示例5: slotItemChanged
void XMPEditWidget::slotItemChanged()
{
KPMetadata meta;
meta.load((*d->dlg->currentItem()).path());
#if KEXIV2_VERSION >= 0x010000
d->exifData = meta.getExifEncoded();
#else
d->exifData = meta.getExif();
#endif
d->iptcData = meta.getIptc();
d->xmpData = meta.getXmp();
d->contentPage->readMetadata(d->xmpData);
d->originPage->readMetadata(d->xmpData);
d->subjectsPage->readMetadata(d->xmpData);
d->keywordsPage->readMetadata(d->xmpData);
d->categoriesPage->readMetadata(d->xmpData);
d->creditsPage->readMetadata(d->xmpData);
d->statusPage->readMetadata(d->xmpData);
d->propertiesPage->readMetadata(d->xmpData);
d->isReadOnly = !KPMetadata::canWriteXmp((*d->dlg->currentItem()).path());
emit signalSetReadOnly(d->isReadOnly);
d->page_content->setEnabled(!d->isReadOnly);
d->page_origin->setEnabled(!d->isReadOnly);
d->page_subjects->setEnabled(!d->isReadOnly);
d->page_keywords->setEnabled(!d->isReadOnly);
d->page_categories->setEnabled(!d->isReadOnly);
d->page_credits->setEnabled(!d->isReadOnly);
d->page_status->setEnabled(!d->isReadOnly);
d->page_properties->setEnabled(!d->isReadOnly);
}
示例6: 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;
//.........这里部分代码省略.........
示例7: 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;
//.........这里部分代码省略.........
示例8: uploadNextPhoto
void SwWindow::uploadNextPhoto()
{
if (m_transferQueue.isEmpty())
{
// done!
m_progressDlg->hide();
if (m_imagesTotal > 0)
{
SwAlbum album = m_albumsList.at( m_widget->m_albumsCoB->currentIndex() );
KMessageBox::information(this,
i18n("Upload complete. Visit \"<a href=\"%1\">%2</a>\" to view the album online and invite people.",
album.albumUrl,
album.title),
i18n("Upload complete"),
QString(),
KMessageBox::AllowLink
);
}
return;
}
m_progressDlg->progressBar()->setMaximum(m_imagesTotal);
m_progressDlg->progressBar()->setValue(m_imagesCount);
QString imgPath = m_transferQueue.first().path();
QString caption;
bool res;
// check if we have to RAW file -> use preview image then
bool isRAW = KPMetadata::isRawFile(QUrl::fromLocalFile(imgPath));
if (isRAW || m_widget->m_resizeChB->isChecked())
{
if (!prepareImageForUpload(imgPath, isRAW, caption))
{
slotAddPhotoDone(666, i18n("Cannot open file"));
return;
}
res = m_connector->addPhoto(m_tmpPath, m_currentAlbumID, caption);
}
else
{
KPMetadata meta;
if (meta.load(imgPath))
caption = getImageCaption(meta);
else
caption.clear();
m_tmpPath.clear();
res = m_connector->addPhoto(imgPath, m_currentAlbumID, caption);
}
if (!res)
{
slotAddPhotoDone(666, i18n("Cannot open file"));
return;
}
m_progressDlg->setLabelText(i18n("Uploading file %1", m_transferQueue.first().path()));
}
示例9: generate
/*!
\fn KmlExport::generate()
*/
void KmlExport::generate()
{
//! @todo perform a test here before continuing.
createDir(QString(m_tempDestDir + m_imageDir));
m_progressDialog->show();
ImageCollection selection = m_interface->currentSelection();
ImageCollection album = m_interface->currentAlbum();
// create the document, and it's root
m_kmlDocument = new QDomDocument("");
QDomImplementation impl;
QDomProcessingInstruction instr = m_kmlDocument->createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
m_kmlDocument->appendChild(instr);
QDomElement kmlRoot = m_kmlDocument->createElementNS("http://www.opengis.net/kml/2.2", "kml");
m_kmlDocument->appendChild( kmlRoot );
QDomElement kmlAlbum = addKmlElement(kmlRoot, "Document");
QDomElement kmlName = addKmlTextElement(kmlAlbum, "name", album.name());
QDomElement kmlDescription = addKmlHtmlElement(kmlAlbum, "description",
"Created with kmlexport <a href=\"http://www.digikam.org/\">kipi-plugin</a>");
if (m_GPXtracks)
{
addTrack(kmlAlbum);
}
KPMetadata meta;
KUrl::List images = selection.images();
int defectImage = 0;
int pos = 1;
int count = images.count();
KUrl::List::ConstIterator imagesEnd (images.constEnd());
for( KUrl::List::ConstIterator selIt = images.constBegin(); selIt != imagesEnd; ++selIt, ++pos)
{
double alt, lat, lng;
KUrl url = *selIt;
KPImageInfo info(url);
bool hasGPSInfo = info.hasGeolocationInfo();
if (hasGPSInfo)
{
lat = info.latitude();
lng = info.longitude();
alt = info.altitude();
}
else
{
meta.load(url.path());
hasGPSInfo = meta.getGPSInfo(alt, lat, lng);
}
if ( hasGPSInfo )
{
// generation de l'image et de l'icone
generateImagesthumb(url, kmlAlbum);
}
else
{
logWarning(i18n("No position data for '%1'", info.name()));
defectImage++;
}
m_progressDialog->progressWidget()->setProgress(pos, count);
kapp->processEvents();
}
if (defectImage)
{
/** @todo if defectImage==count there are no pictures exported, does is it worth to continue? */
KMessageBox::information(kapp->activeWindow(),
i18np("No position data for 1 picture",
"No position data for %1 pictures", defectImage));
}
/** @todo change to kml or kmz if compressed */
QFile file( m_tempDestDir + m_KMLFileName + ".kml");
/** @todo handle file opening problems */
file.open( QIODevice::WriteOnly );
QTextStream stream( &file ); // we will serialize the data into the file
stream << m_kmlDocument->toString();
file.close();
delete m_kmlDocument;
m_kmlDocument = 0;
KIO::moveAs(m_tempDestDir, m_baseDestDir, KIO::HideProgressInfo | KIO::Overwrite);
logInfo(i18n("Move to final directory"));
m_progressDialog->close();
}
示例10: generateImagesthumb
/*!
\fn KmlExport::generateImagesthumb(const KUrl& imageURL, QDomElement& kmlAlbum )
*/
void KmlExport::generateImagesthumb(const KUrl& imageURL, QDomElement& kmlAlbum )
{
KPImageInfo info(imageURL);
// Load image
QString path = imageURL.path();
QFile imageFile(path);
if (!imageFile.open(QIODevice::ReadOnly))
{
logWarning(i18n("Could not read image '%1'",path));
return;
}
QImageReader reader(&imageFile);
QString imageFormat = reader.format();
if (imageFormat.isEmpty())
{
logWarning(i18n("Format of image '%1' is unknown",path));
return;
}
imageFile.close();
imageFile.open(QIODevice::ReadOnly);
QByteArray imageData = imageFile.readAll();
QImage image;
if (!image.loadFromData(imageData) )
{
logWarning(i18n("Error loading image '%1'",path));
return;
}
// Process images
if ( info.orientation() != KPMetadata::ORIENTATION_UNSPECIFIED )
{
QMatrix matrix = RotationMatrix::toMatrix(info.orientation());
image = image.transformed( matrix );
}
image = image.scaled(m_size, m_size, Qt::KeepAspectRatioByExpanding);
QImage icon;
if (m_optimize_googlemap)
{
icon = generateSquareThumbnail(image,m_googlemapSize);
}
else
{
// icon = image.smoothScale(m_iconSize, m_iconSize, QImage::ScaleMax);
icon = generateBorderedThumbnail(image, m_iconSize);
}
// Save images
/** @todo remove the extension of the file
* it's appear with digikam but not with gwenview
* which already seems to strip the extension
*/
QString baseFileName = webifyFileName(info.name());
//baseFileName = mUniqueNameHelper.makeNameUnique(baseFileName);
QString fullFileName;
fullFileName = baseFileName + '.' + imageFormat.toLower();
QString destPath = m_tempDestDir + m_imageDir + fullFileName;
if (!image.save(destPath, imageFormat.toAscii(), 85))
{
// if not able to save the image, it's pointless to create a placemark
logWarning(i18n("Could not save image '%1' to '%2'",path,destPath));
}
else
{
//logInfo(i18n("Creation of picture '%1'").arg(fullFileName));
double alt, lat, lng;
KPMetadata meta;
if (info.hasGeolocationInfo())
{
lat = info.latitude();
lng = info.longitude();
alt = info.altitude();
}
else
{
meta.load(imageURL.path());
meta.getGPSInfo(alt, lat, lng);
}
QDomElement kmlPlacemark = addKmlElement(kmlAlbum, "Placemark");
addKmlTextElement(kmlPlacemark,"name",fullFileName);
// location and altitude
QDomElement kmlGeometry = addKmlElement(kmlPlacemark, "Point");
if (alt)
//.........这里部分代码省略.........
示例11: updateMetadataImageMagick
bool Utils::updateMetadataImageMagick(const QString& src, QString& err)
{
QFileInfo finfo(src);
if (src.isEmpty() || !finfo.isReadable())
{
err = i18n("unable to open source file");
return false;
}
QImage img(src);
QImage iptcPreview = img.scaled(1280, 1024, Qt::KeepAspectRatio, Qt::SmoothTransformation);
QImage exifThumbnail = iptcPreview.scaled(160, 120, Qt::KeepAspectRatio, Qt::SmoothTransformation);
KPMetadata meta;
meta.load(src);
meta.setImageOrientation(KPMetadata::ORIENTATION_NORMAL);
meta.setImageProgramId(QString("Kipi-plugins"), QString(kipiplugins_version));
meta.setImageDimensions(img.size());
meta.setExifThumbnail(exifThumbnail);
meta.setImagePreview(iptcPreview);
#if KEXIV2_VERSION >= 0x010000
QByteArray exifData = meta.getExifEncoded(true);
#else
QByteArray exifData = meta.getExif(true);
#endif
QByteArray iptcData = meta.getIptc(true);
QByteArray xmpData = meta.getXmp();
KTemporaryFile exifTemp;
exifTemp.setSuffix(QString("kipipluginsexif.app1"));
exifTemp.setAutoRemove(true);
if ( !exifTemp.open() )
{
err = i18n("unable to open temp file");
return false;
}
QString exifFile = exifTemp.fileName();
QDataStream streamExif( &exifTemp );
streamExif.writeRawData(exifData.data(), exifData.size());
exifTemp.close();
KTemporaryFile iptcTemp;
iptcTemp.setSuffix(QString("kipipluginsiptc.8bim"));
iptcTemp.setAutoRemove(true);
iptcTemp.open();
if ( !iptcTemp.open() )
{
err = i18n("Cannot rotate: unable to open temp file");
return false;
}
QString iptcFile = iptcTemp.fileName();
QDataStream streamIptc( &iptcTemp );
streamIptc.writeRawData(iptcData.data(), iptcData.size());
iptcTemp.close();
KTemporaryFile xmpTemp;
xmpTemp.setSuffix(QString("kipipluginsxmp.xmp"));
xmpTemp.setAutoRemove(true);
if ( !xmpTemp.open() )
{
err = i18n("unable to open temp file");
return false;
}
QString xmpFile = xmpTemp.fileName();
QDataStream streamXmp( &xmpTemp );
streamXmp.writeRawData(xmpData.data(), xmpData.size());
xmpTemp.close();
KProcess process;
process.clearProgram();
process << "mogrify";
process << "-profile";
process << exifFile;
process << "-profile";
process << iptcFile;
process << "-profile";
process << xmpFile;
process << src + QString("[0]");
kDebug() << "ImageMagick Command line: " << process.program();
process.start();
if (!process.waitForFinished())
return false;
if (process.exitStatus() != QProcess::NormalExit)
return false;
switch (process.exitCode())
{
case 0: // Process finished successfully !
{
return true;
//.........这里部分代码省略.........
示例12: 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();
//.........这里部分代码省略.........
示例13: 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))
{
//.........这里部分代码省略.........
示例14: 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;
}
示例15: slotListPhotosDoneForUpload
void PicasawebWindow::slotListPhotosDoneForUpload(int errCode, const QString &errMsg,
const QList <PicasaWebPhoto>& photosList)
{
disconnect(m_talker, SIGNAL(signalListPhotosDone(int,QString,QList<PicasaWebPhoto>)),
this, SLOT(slotListPhotosDoneForUpload(int,QString,QList<PicasaWebPhoto>)));
if (errCode != 0)
{
KMessageBox::error(this, i18n("Picasaweb Call Failed: %1\n", errMsg));
return;
}
typedef QPair<KUrl,PicasaWebPhoto> Pair;
m_transferQueue.clear();
KUrl::List urlList = m_widget->m_imgList->imageUrls(true);
if (urlList.isEmpty())
return;
for (KUrl::List::ConstIterator it = urlList.constBegin(); it != urlList.constEnd(); ++it)
{
KPImageInfo info(*it);
PicasaWebPhoto temp;
temp.title = info.name();
// Picasa doesn't support image titles. Include it in descriptions if needed.
QStringList descriptions = QStringList() << info.title() << info.description();
descriptions.removeAll("");
temp.description = descriptions.join("\n\n");
// check for existing items
QString localId;
KPMetadata meta;
if (meta.load((*it).toLocalFile()))
{
localId = meta.getXmpTagString("Xmp.kipi.picasawebGPhotoId");
}
QList<PicasaWebPhoto>::const_iterator itPWP;
for (itPWP = photosList.begin(); itPWP != photosList.end(); ++itPWP)
{
if ((*itPWP).id == localId)
{
temp.id = localId;
temp.editUrl = (*itPWP).editUrl;
temp.thumbURL = (*itPWP).thumbURL;
break;
}
}
//Tags from the database
temp.gpsLat.setNum(info.latitude());
temp.gpsLon.setNum(info.longitude());
temp.tags = info.tagsPath();
m_transferQueue.append( Pair( (*it), temp) );
}
if (m_transferQueue.isEmpty())
return;
m_currentAlbumID = m_widget->m_albumsCoB->itemData(
m_widget->m_albumsCoB->currentIndex()).toString();
m_imagesTotal = m_transferQueue.count();
m_imagesCount = 0;
m_widget->progressBar()->setFormat(i18n("%v / %m"));
m_widget->progressBar()->setMaximum(m_imagesTotal);
m_widget->progressBar()->setValue(0);
m_widget->progressBar()->show();
m_widget->progressBar()->progressScheduled(i18n("Picasa Export"), true, true);
m_widget->progressBar()->progressThumbnailChanged(KIcon("kipi").pixmap(22, 22));
m_renamingOpt = 0;
uploadNextPhoto();
}