39 #include <QtCore/QByteArray>
40 #include <QtCore/QString>
41 #include <QtCore/QDateTime>
42 #include <QtCore/QMap>
43 #include <QtCore/QSharedDataPointer>
44 #include <QtCore/QStringList>
45 #include <QtCore/QVariant>
46 #include <QtCore/QRegExp>
47 #include <QtGui/QImage>
75 WRITETOSIDECARONLY = 1,
78 WRITETOSIDECARANDIMAGE = 2,
81 WRITETOSIDECARONLY4READONLYFILES = 3
88 WORKSPACE_UNSPECIFIED = 0,
90 WORKSPACE_ADOBERGB = 2,
91 WORKSPACE_UNCALIBRATED = 65535
98 ORIENTATION_UNSPECIFIED = 0,
99 ORIENTATION_NORMAL = 1,
100 ORIENTATION_HFLIP = 2,
101 ORIENTATION_ROT_180 = 3,
102 ORIENTATION_VFLIP = 4,
103 ORIENTATION_ROT_90_HFLIP = 5,
104 ORIENTATION_ROT_90 = 6,
105 ORIENTATION_ROT_90_VFLIP = 7,
106 ORIENTATION_ROT_270 = 8
175 static bool initializeExiv2();
182 static bool cleanupExiv2();
186 static bool supportXmp();
190 static bool supportMetadataWritting(
const QString& typeMime);
211 static KUrl sidecarUrl(
const KUrl& url);
215 static KUrl sidecarUrl(
const QString& path);
219 static bool hasSidecar(
const QString& path);
233 bool loadFromData(
const QByteArray& imgData)
const;
238 virtual bool load(
const QString& filePath)
const;
243 bool save(
const QString& filePath)
const;
248 bool applyChanges()
const;
252 bool isEmpty()
const;
256 void setFilePath(
const QString& path);
271 QSize getPixelSize()
const;
281 void setWriteRawFiles(
const bool on);
286 bool writeRawFiles()
const;
290 void setUseXMPSidecar4Reading(
const bool on);
294 bool useXMPSidecar4Reading()
const;
300 void setMetadataWritingMode(
const int mode);
306 int metadataWritingMode()
const;
311 void setUpdateFileTimeStamp(
bool on);
315 bool updateFileTimeStamp()
const;
326 bool setImageProgramId(
const QString& program,
const QString& version)
const;
331 QSize getImageDimensions()
const;
336 bool setImageDimensions(
const QSize& size,
bool setProgramName=
true)
const;
346 bool setImageOrientation(
ImageOrientation orientation,
bool setProgramName=
true)
const;
356 bool setImageColorWorkSpace(
ImageColorWorkSpace workspace,
bool setProgramName=
true)
const;
366 bool setImageDateTime(
const QDateTime& dateTime,
bool setDateTimeDigitized=
false,
367 bool setProgramName=
true)
const;
373 QDateTime getDigitizationDateTime(
bool fallbackToCreationTime=
false)
const;
378 bool getImagePreview(
QImage& preview)
const;
386 virtual bool setImagePreview(
const QImage& preview,
bool setProgramName=
true)
const;
396 static bool canWriteComment(
const QString& filePath);
400 bool hasComments()
const;
404 bool clearComments()
const;
416 QString getCommentsDecoded()
const;
421 bool setComments(
const QByteArray& data)
const;
437 TagsMap getStdExifTagsList()
const;
441 TagsMap getMakernoteTagsList()
const;
445 static bool canWriteExif(
const QString& filePath);
449 bool hasExif()
const;
453 bool clearExif()
const;
462 QByteArray getExifEncoded(
bool addExifHeader=
false)
const;
473 QImage getExifThumbnail(
bool fixOrientation)
const;
483 bool setExifThumbnail(
const QImage& thumb,
bool setProgramName=
true)
const;
486 bool removeExifThumbnail()
const;
489 bool setTiffThumbnail(
const QImage& thumb,
bool setProgramName=
true)
const;
494 QString getExifComment()
const;
499 bool setExifComment(
const QString& comment,
bool setProgramName=
true)
const;
504 QString getExifTagString(
const char* exifTagName,
bool escapeCR=
true)
const;
508 bool setExifTagString(
const char* exifTagName,
const QString& value,
bool setProgramName=
true)
const;
512 bool getExifTagLong(
const char* exifTagName,
long &val)
const;
516 bool getExifTagLong(
const char* exifTagName,
long &val,
int component)
const;
520 bool setExifTagLong(
const char* exifTagName,
long val,
bool setProgramName=
true)
const;
526 bool getExifTagRational(
const char* exifTagName,
long int& num,
long int& den,
int component=0)
const;
532 bool setExifTagRational(
const char* exifTagName,
long int num,
long int den,
bool setProgramName=
true)
const;
537 QByteArray getExifTagData(
const char* exifTagName)
const;
541 bool setExifTagData(
const char* exifTagName,
const QByteArray& data,
bool setProgramName=
true)
const;
551 QVariant getExifTagVariant(
const char* exifTagName,
bool rationalAsListOfInts=
true,
bool escapeCR=
true,
int component=0)
const;
559 bool setExifTagVariant(
const char* exifTagName,
const QVariant& data,
560 bool rationalWantSmallDenominator=
true,
bool setProgramName=
true)
const;
565 bool removeExifTag(
const char* exifTagName,
bool setProgramName=
true)
const;
569 QString getExifTagTitle(
const char* exifTagName);
573 QString getExifTagDescription(
const char* exifTagName);
580 QString createExifUserStringFromValue(
const char* exifTagName,
const QVariant& val,
bool escapeCR=
true);
616 static bool canWriteIptc(
const QString& filePath);
620 bool hasIptc()
const;
624 bool clearIptc()
const;
630 QByteArray getIptc(
bool addIrbHeader=
false)
const;
640 QString getIptcTagString(
const char* iptcTagName,
bool escapeCR=
true)
const;
644 bool setIptcTagString(
const char* iptcTagName,
const QString& value,
bool setProgramName=
true)
const;
653 QStringList getIptcTagsStringList(
const char* iptcTagName,
bool escapeCR=
true)
const;
658 bool setIptcTagsStringList(
const char* iptcTagName,
int maxSize,
660 bool setProgramName=
true)
const;
665 QByteArray getIptcTagData(
const char* iptcTagName)
const;
669 bool setIptcTagData(
const char* iptcTagName,
const QByteArray& data,
bool setProgramName=
true)
const;
674 bool removeIptcTag(
const char* iptcTagName,
bool setProgramName=
true)
const;
678 QString getIptcTagTitle(
const char* iptcTagName);
682 QString getIptcTagDescription(
const char* iptcTagName);
714 bool setProgramName=
true)
const;
726 bool setProgramName=
true)
const;
739 bool setProgramName=
true)
const;
753 static bool canWriteXmp(
const QString& filePath);
761 bool clearXmp()
const;
776 QString getXmpTagString(
const char* xmpTagName,
bool escapeCR=
true)
const;
780 bool setXmpTagString(
const char* xmpTagName,
const QString& value,
781 bool setProgramName=
true)
const;
787 bool setXmpTagString(
const char* xmpTagName,
const QString& value,
788 XmpTagType type,
bool setProgramName=
true)
const;
792 QString getXmpTagTitle(
const char* xmpTagName);
796 QString getXmpTagDescription(
const char* xmpTagName);
823 KExiv2::AltLangMap getXmpTagStringListLangAlt(
const char* xmpTagName,
bool escapeCR=
true)
const;
829 bool setXmpTagStringListLangAlt(
const char* xmpTagName,
const KExiv2::AltLangMap& values,
830 bool setProgramName)
const;
837 QString getXmpTagStringLangAlt(
const char* xmpTagName,
const QString& langAlt,
bool escapeCR)
const;
844 bool setXmpTagStringLangAlt(
const char* xmpTagName,
const QString& value,
845 const QString& langAlt,
bool setProgramName=
true)
const;
850 QStringList getXmpTagStringSeq(
const char* xmpTagName,
bool escapeCR=
true)
const;
855 bool setXmpTagStringSeq(
const char* xmpTagName,
const QStringList& seq,
856 bool setProgramName=
true)
const;
861 QStringList getXmpTagStringBag(
const char* xmpTagName,
bool escapeCR)
const;
866 bool setXmpTagStringBag(
const char* xmpTagName,
const QStringList& bag,
867 bool setProgramName=
true)
const;
874 bool addToXmpTagStringBag(
const char* xmpTagName,
const QStringList& entriesToAdd,
875 bool setProgramName)
const;
881 bool removeFromXmpTagStringBag(
const char* xmpTagName,
const QStringList& entriesToRemove,
882 bool setProgramName)
const;
894 QVariant getXmpTagVariant(
const char* xmpTagName,
bool rationalAsListOfInts=
true,
bool stringEscapeCR=
true)
const;
905 bool setXmpKeywords(
const QStringList& newKeywords,
bool setProgramName=
true)
const;
910 bool removeXmpKeywords(
const QStringList& keywordsToRemove,
bool setProgramName=
true);
921 bool setXmpSubjects(
const QStringList& newSubjects,
bool setProgramName=
true)
const;
926 bool removeXmpSubjects(
const QStringList& subjectsToRemove,
bool setProgramName=
true);
938 bool setXmpSubCategories(
const QStringList& newSubCategories,
bool setProgramName=
true)
const;
943 bool removeXmpSubCategories(
const QStringList& categoriesToRemove,
bool setProgramName=
true);
948 bool removeXmpTag(
const char* xmpTagName,
bool setProgramName=
true)
const;
957 static bool registerXmpNameSpace(
const QString& uri,
const QString& prefix);
960 static bool unregisterXmpNameSpace(
const QString& uri);
970 bool initializeGPSInfo(
const bool setProgramName);
974 bool getGPSInfo(
double& altitude,
double& latitude,
double& longitude)
const;
979 QString getGPSLatitudeString()
const;
980 QString getGPSLongitudeString()
const;
986 bool getGPSLatitudeNumber(
double*
const latitude)
const;
987 bool getGPSLongitudeNumber(
double*
const longitude)
const;
991 bool getGPSAltitude(
double*
const altitude)
const;
996 bool setGPSInfo(
const double altitude,
const double latitude,
const double longitude,
const bool setProgramName=
true);
1001 bool setGPSInfo(
const double*
const altitude,
const double latitude,
const double longitude,
const bool setProgramName=
true);
1006 bool setGPSInfo(
const double altitude,
const QString &latitude,
const QString &longitude,
const bool setProgramName=
true);
1011 bool removeGPSInfo(
const bool setProgramName=
true);
1018 static void convertToRational(
const double number,
long int*
const numerator,
1019 long int*
const denominator,
const int rounding);
1028 static void convertToRationalSmallDenominator(
const double number,
long int*
const numerator,
1029 long int*
const denominator);
1034 static QString convertToGPSCoordinateString(
const long int numeratorDegrees,
const long int denominatorDegrees,
1035 const long int numeratorMinutes,
const long int denominatorMinutes,
1036 const long int numeratorSeconds,
long int denominatorSeconds,
1037 const char directionReference);
1042 static QString convertToGPSCoordinateString(
const bool isLatitude,
double coordinate);
1048 static bool convertFromGPSCoordinateString(
const QString& coordinate,
1049 long int*
const numeratorDegrees,
long int*
const denominatorDegrees,
1050 long int*
const numeratorMinutes,
long int*
const denominatorMinutes,
1051 long int*
const numeratorSeconds,
long int*
const denominatorSeconds,
1052 char*
const directionReference);
1058 static bool convertFromGPSCoordinateString(
const QString& gpsString,
double*
const coordinate);
1063 static bool convertToUserPresentableNumbers(
const QString& coordinate,
1064 int*
const degrees,
int*
const minutes,
1065 double*
const seconds,
char*
const directionReference);
1072 static void convertToUserPresentableNumbers(
const bool isLatitude,
double coordinate,
1073 int*
const degrees,
int*
const minutes,
1074 double*
const seconds,
char*
const directionReference);
1095 virtual bool setProgramId(
bool on=
true)
const;
===========================================================This file is a part of digiKam project htt...
QMap< QString, QString > AltLangMap
A map used to store a list of Alternative Language values.
ImageColorWorkSpace
The image color workspace values given by Exif metadata.
ImageOrientation
The image orientation values given by Exif metadata.
XmpTagType
Xmp tag types, used by setXmpTag, only first three types are used.
QMap< QString, QString > MetaDataMap
A map used to store Tags Key and Tags Value.
QMap< QString, QStringList > TagsMap
A map used to store Tags Key and a list of Tags properties :
===========================================================This file is part of the KDE project ...
MetadataWritingMode
The image metadata writing mode, between image file metadata and XMP sidecar file, depending on the context.