diff options
author | Arno <arno@disconnect.de> | 2015-07-18 08:52:46 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2015-07-18 08:52:46 +0200 |
commit | b3ccbde0d3e540453b80709002cae0630172f1dc (patch) | |
tree | b810c54996fde7f6f57b0ed8f31532c5ac8e82cc /pictureviewer2.cpp | |
parent | a53cf905aed8cc14c9120ad03b6f03fe1373fc2d (diff) | |
download | SheMov-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.cpp | 14 |
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); |