summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2015-07-18 08:52:46 +0200
committerArno <arno@disconnect.de>2015-07-18 08:52:46 +0200
commitb3ccbde0d3e540453b80709002cae0630172f1dc (patch)
treeb810c54996fde7f6f57b0ed8f31532c5ac8e82cc /pictureviewer2.cpp
parenta53cf905aed8cc14c9120ad03b6f03fe1373fc2d (diff)
downloadSheMov-b3ccbde0d3e540453b80709002cae0630172f1dc.tar.gz
SheMov-b3ccbde0d3e540453b80709002cae0630172f1dc.tar.bz2
SheMov-b3ccbde0d3e540453b80709002cae0630172f1dc.zip
Automatically convert invalid jpg pics
Well, seems that's Qt's ImageReader got pickier regarding jpeg-files. If the resulting QPixmap is null and void, try to convert them to png. This introduces a new dependency to ImageMagic++. I don't like it, but it works, kinda... I saw random crashes while testing...
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r--pictureviewer2.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index fcdf4b7..7033a52 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -418,7 +418,15 @@ void PictureViewer2::showFile(const PicData &file){
mCurPicData = file;
QPixmap pixmap(file.at(PicFilesModel::FullPath).toString());
if(pixmap.isNull()){
- pixmap = QPixmap(mDefaultFile);
+ mCurPicData = Helper::convertToPng(file);
+ mFiles[mCurPos] = mCurPicData;
+ if(mCurPicData.isEmpty()){
+ return;
+ }
+ pixmap = QPixmap(mCurPicData.at(3).toString());
+ if(pixmap.isNull()){
+ pixmap = QPixmap(mDefaultFile);
+ }
}
if(mUseGradient){
setGradient(pixmap);
@@ -441,7 +449,7 @@ void PictureViewer2::showFile(const PicData &file){
mCur->setPos(picRect.topLeft());
setWindowTitle(constructWindowTitle());
if(mConfigInfoPos != ConfigurationDialog::NoDisplay && mShowInfoItem){
- constructInfoItem(file, pixmap.size());
+ constructInfoItem(mCurPicData, pixmap.size());
}else{
if(mFnItem){
mScene->removeItem(mFnItem);
@@ -450,7 +458,7 @@ void PictureViewer2::showFile(const PicData &file){
}
}
if(mConfigMapPos != ConfigurationDialog::NoDisplay && mShowMappingItem){
- constructMappingItem(file);
+ constructMappingItem(mCurPicData);
}else{
if(mMappingItem){
mScene->removeItem(mMappingItem);