From b3ccbde0d3e540453b80709002cae0630172f1dc Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 18 Jul 2015 08:52:46 +0200 Subject: 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... --- pictureviewer2.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'pictureviewer2.cpp') 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); -- cgit v1.2.3-70-g09d2