initial commit

This commit is contained in:
2019-02-08 15:56:56 +01:00
parent facdf6d6fd
commit e49c6c3517
12 changed files with 1097 additions and 105 deletions
+60 -9
View File
@@ -1,5 +1,7 @@
#include "cexif.h"
#include "common.h"
#include <QDebug>
#include <QImage>
#include <QPicture>
@@ -7,8 +9,7 @@
#include <exiv2/exiv2.hpp>
cEXIF::cEXIF(cEXIFTagList* lpEXIFTagList) :
m_lpEXIFTagList(lpEXIFTagList),
cEXIF::cEXIF() :
m_iWidth(0),
m_iHeight(0),
m_szFileName("")
@@ -25,7 +26,7 @@ bool cEXIF::fromFile(const QString& szFileName)
m_szFileName = "";
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(szFileName.toStdString());
Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(szFileName.toStdString());
if(!image.get())
return(false);
@@ -38,7 +39,7 @@ bool cEXIF::fromFile(const QString& szFileName)
Exiv2::ExifData::const_iterator end = exifData.end();
for(Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i)
{
cEXIFTag* lpTag = m_lpEXIFTagList->find(i->tag(), i->ifdId());
cEXIFTag* lpTag = m_exifTagList.find(i->tag(), i->ifdId());
if(lpTag)
{
@@ -68,8 +69,50 @@ bool cEXIF::fromFile(const QString& szFileName)
{
QImage image;
if(image.load(szFileName))
m_previewList.append(image.scaled(160, 120, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation));
m_thumbnail = image.scaled(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
}
else
{
qint32 index = -1;
qint32 widthDiff = std::numeric_limits<qint32>::max();
qint32 heightDiff = std::numeric_limits<qint32>::max();
for(qint32 i = 0;i < m_previewList.count();i++)
{
qint32 wd = m_previewList[i].width() - THUMBNAIL_WIDTH;
qint32 hd = m_previewList[i].height() - THUMBNAIL_HEIGHT;
if(wd >= 0 && hd >= 0)
{
if(wd <= widthDiff && hd <= heightDiff)
{
index = i;
widthDiff = wd;
heightDiff = hd;
}
}
}
if(index == -1)
{
for(qint32 i = 0;i < m_previewList.count();i++)
{
qint32 wd = m_previewList[i].width() - THUMBNAIL_WIDTH;
qint32 hd = m_previewList[i].height() - THUMBNAIL_HEIGHT;
if(abs(wd) <= widthDiff && abs(hd) <= heightDiff)
{
index = i;
widthDiff = abs(wd);
heightDiff = abs(hd);
}
}
}
if(index != -1)
m_thumbnail = m_previewList[index].scaled(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
}
return(true);
}
@@ -116,9 +159,12 @@ qint32 cEXIF::iso()
QString cEXIF::flash()
{
cEXIFFlashList list;
return(m_exifFlashList.flash(getTag(0x9209, 5).value<qint32>()));
}
return(list.flash(getTag(0x9209, 5).value<qint32>()));
qint32 cEXIF::flashID()
{
return(getTag(0x9209, 5).value<qint32>());
}
qreal cEXIF::focalLength()
@@ -203,9 +249,14 @@ QList<QImage> cEXIF::previewList()
return(m_previewList);
}
QImage cEXIF::thumbnail()
{
return(m_thumbnail);
}
QVariant cEXIF::getTag(qint32 iTAGID, qint32 iIFDID)
{
cEXIFTag* lpTag = m_lpEXIFTagList->find(iTAGID, iIFDID);
cEXIFTag* lpTag = m_exifTagList.find(iTAGID, iIFDID);
if(!lpTag)
return(QVariant());
@@ -220,7 +271,7 @@ QVariant cEXIF::getTag(qint32 iTAGID, qint32 iIFDID)
QList<QVariant> cEXIF::getTagList(qint32 iTAGID, qint32 iIFDID)
{
cEXIFTag* lpTag = m_lpEXIFTagList->find(iTAGID, iIFDID);
cEXIFTag* lpTag = m_exifTagList.find(iTAGID, iIFDID);
if(!lpTag)
return(QList<QVariant>());