update preview orientation

This commit is contained in:
2019-11-12 12:03:52 +01:00
parent eee85fcff5
commit 83dabff2b1
2 changed files with 133 additions and 87 deletions
+109 -85
View File
@@ -76,27 +76,77 @@ bool cEXIF::fromFile(const QString& szFileName)
QImage image; QImage image;
image.loadFromData(static_cast<const uchar*>(previewImage.pData()), static_cast<qint32>(previewImage.size())); image.loadFromData(static_cast<const uchar*>(previewImage.pData()), static_cast<qint32>(previewImage.size()));
QTransform rotation; // QTransform rotation;
int angle = 0; // int angle = 0;
switch(imageOrientation()) // switch(imageOrientation())
{ // {
case 8: // case 8:
angle = 270; // angle = 270;
break; // break;
case 3: // case 3:
angle = 180; // angle = 180;
break; // break;
case 6: // case 6:
angle = 90; // angle = 90;
break; // break;
// }
// if(angle != 0)
// {
// rotation.rotate(angle);
// image = image.transformed(rotation);
// }
m_previewList.append(image);
}
} }
if(angle != 0) if(!exifData.empty())
{ {
rotation.rotate(angle); Exiv2::ExifData::const_iterator end = exifData.end();
image = image.transformed(rotation); for(Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i)
{
cEXIFTag* lpTag = m_exifTagList.find(i->tag(), i->ifdId());
if(lpTag)
{
cEXIFValue* lpValue = m_exifValueList.add(lpTag);
if(lpValue)
lpValue->setValue(QString::fromStdString(i->value().toString()), i->typeId(), i->count());
} }
}
Exiv2::PreviewManager previewManager(*image);
Exiv2::PreviewPropertiesList previewPropertiesList = previewManager.getPreviewProperties();
for(Exiv2::PreviewPropertiesList::const_iterator i = previewPropertiesList.begin();i != previewPropertiesList.end();i++)
{
Exiv2::PreviewImage previewImage = previewManager.getPreviewImage(*i);
QImage image;
image.loadFromData(static_cast<const uchar*>(previewImage.pData()), static_cast<qint32>(previewImage.size()));
// QTransform rotation;
// int angle = 0;
// switch(imageOrientation())
// {
// case 8:
// angle = 270;
// break;
// case 3:
// angle = 180;
// break;
// case 6:
// angle = 90;
// break;
// }
// if(angle != 0)
// {
// rotation.rotate(angle);
// image = image.transformed(rotation);
// }
m_previewList.append(image); m_previewList.append(image);
} }
@@ -127,77 +177,27 @@ bool cEXIF::fromFile(const QString& szFileName)
QImage image; QImage image;
image.loadFromData(static_cast<const uchar*>(previewImage.pData()), static_cast<qint32>(previewImage.size())); image.loadFromData(static_cast<const uchar*>(previewImage.pData()), static_cast<qint32>(previewImage.size()));
QTransform rotation; // QTransform rotation;
int angle = 0; // int angle = 0;
switch(imageOrientation()) // switch(imageOrientation())
{ // {
case 8: // case 8:
angle = 270; // angle = 270;
break; // break;
case 3: // case 3:
angle = 180; // angle = 180;
break; // break;
case 6: // case 6:
angle = 90; // angle = 90;
break; // break;
} // }
if(angle != 0) // if(angle != 0)
{ // {
rotation.rotate(angle); // rotation.rotate(angle);
image = image.transformed(rotation); // image = image.transformed(rotation);
} // }
m_previewList.append(image);
}
}
if(!exifData.empty())
{
Exiv2::ExifData::const_iterator end = exifData.end();
for(Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i)
{
cEXIFTag* lpTag = m_exifTagList.find(i->tag(), i->ifdId());
if(lpTag)
{
cEXIFValue* lpValue = m_exifValueList.add(lpTag);
if(lpValue)
lpValue->setValue(QString::fromStdString(i->value().toString()), i->typeId(), i->count());
}
}
Exiv2::PreviewManager previewManager(*image);
Exiv2::PreviewPropertiesList previewPropertiesList = previewManager.getPreviewProperties();
for(Exiv2::PreviewPropertiesList::const_iterator i = previewPropertiesList.begin();i != previewPropertiesList.end();i++)
{
Exiv2::PreviewImage previewImage = previewManager.getPreviewImage(*i);
QImage image;
image.loadFromData(static_cast<const uchar*>(previewImage.pData()), static_cast<qint32>(previewImage.size()));
QTransform rotation;
int angle = 0;
switch(imageOrientation())
{
case 8:
angle = 270;
break;
case 3:
angle = 180;
break;
case 6:
angle = 90;
break;
}
if(angle != 0)
{
rotation.rotate(angle);
image = image.transformed(rotation);
}
m_previewList.append(image); m_previewList.append(image);
} }
@@ -278,7 +278,31 @@ bool cEXIF::fromFile(const QString& szFileName)
} }
if(index != -1) if(index != -1)
{
QTransform rotation;
int angle = 0;
switch(imageOrientation())
{
case 8:
angle = 270;
break;
case 3:
angle = 180;
break;
case 6:
angle = 90;
break;
}
m_thumbnail = m_previewList[index].scaled(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, Qt::KeepAspectRatio, Qt::SmoothTransformation); m_thumbnail = m_previewList[index].scaled(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, Qt::KeepAspectRatio, Qt::SmoothTransformation);
if(angle != 0)
{
rotation.rotate(angle);
m_thumbnail = m_thumbnail.transformed(rotation);
}
}
} }
return(true); return(true);
+23 -1
View File
@@ -526,7 +526,7 @@ OVERWRITE cMainWindow::exportFile(const EXPORTSETTINGS& exportSettings, cEXIF* l
destFile = fileInfo.baseName() + "_converted" + "." + extension; destFile = fileInfo.baseName() + "_converted" + "." + extension;
break; break;
case FILE_ADD_TAG: case FILE_ADD_TAG:
destFile = replaceTags(fileInfo.baseName(), lpExif, extension, false) + "." + extension; destFile = replaceTags(exportSettings.fileTag, lpExif, extension, false) + "." + extension;
break; break;
} }
break; break;
@@ -574,6 +574,28 @@ OVERWRITE cMainWindow::exportFile(const EXPORTSETTINGS& exportSettings, cEXIF* l
cImage image(lpExif->fileName()); cImage image(lpExif->fileName());
if(!image.isNull()) if(!image.isNull())
{ {
QTransform rotation;
int angle = 0;
switch(lpExif->imageOrientation())
{
case 8:
angle = 270;
break;
case 3:
angle = 180;
break;
case 6:
angle = 90;
break;
}
if(angle != 0)
{
rotation.rotate(angle);
image = image.transformed(rotation);
}
QFileInfo info(destFile); QFileInfo info(destFile);
if(info.exists()) if(info.exists())