You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.0 KiB
C++
49 lines
1.0 KiB
C++
#include "cexif.h"
|
|
|
|
#include <QDebug>
|
|
|
|
#include <exiv2/exiv2.hpp>
|
|
|
|
|
|
cEXIF::cEXIF()
|
|
{
|
|
}
|
|
|
|
bool cEXIF::fromFile(const QString& szFileName)
|
|
{
|
|
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(szFileName.toStdString());
|
|
if(!image.get())
|
|
return(false);
|
|
|
|
image->readMetadata();
|
|
|
|
Exiv2::ExifData& exifData = image->exifData();
|
|
if(exifData.empty())
|
|
return(false);
|
|
|
|
Exiv2::ExifData::const_iterator end = exifData.end();
|
|
for(Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i)
|
|
{
|
|
const char* tn = i->typeName();
|
|
std::string str;
|
|
std::stringstream strBuffer;
|
|
|
|
strBuffer << std::setw(44) << std::setfill(' ') << std::left
|
|
<< i->key() << " "
|
|
<< "0x" << std::setw(4) << std::setfill('0') << std::right
|
|
<< std::hex << i->tag() << " "
|
|
<< std::setw(9) << std::setfill(' ') << std::left
|
|
<< (tn ? tn : "Unknown") << " "
|
|
<< std::dec << std::setw(3)
|
|
<< std::setfill(' ') << std::right
|
|
<< i->count() << " "
|
|
<< std::dec << i->value();
|
|
|
|
str = strBuffer.str();
|
|
|
|
qDebug() << str.data();
|
|
}
|
|
|
|
return(true);
|
|
}
|