QImage doesn't take in a JPG
- 
I have two photos, f1.bmp and f1.jpg each at 4608 x 3456 pixels Using this I can see the photo appear in MyLabel derived from QLabel QImage* image = new QImage(); image->load("D:\\Projects\\FridgeMagnets3\\src\\f1.bmp", Q_NULLPTR); setPixmap(QPixmap::fromImage(*image));the f1.bmp is enormous so it shows the upper left corner in my 600 x 450 MyLabel. shrinking to f2.bmp (600 x 450) fits perfectly. However a jpg of the very same photo (converted by PaintShopPro) never, never, ever 
 appears.QImage* image = new QImage(); bool b1 = image->load("D:\\Projects\\FridgeMagnets3\\src\\f1.jpg", "jpeg"); if (b1 == true) { std::cout << "true " << std::endl; } else { // this guy always appears for *.jpg std::cout << "false " << std::endl; } setPixmap(QPixmap::fromImage(*image));shrinking the jpg down to 600 x 450 or 595 x 446 or 500 x 375 doesn't help Documentation says I need to write a const char* to indicate format.....I've tried "JPG" "jpg" "jpeg" and "JPEG". 
 nothing works!!!How do I make QImage swallow a jpg?? @Rapidrain said in QImage doesn't take in a JPG: QImage* image = new QImage(); bool b1 = image->load("D:\\Projects\\FridgeMagnets3\\src\\f1.jpg", "jpeg"); if (b1 == true) { std::cout << "true " << std::endl; } else { // this guy always appears for *.jpg std::cout << "false " << std::endl; } setPixmap(QPixmap::fromImage(*image));your image is made with the jpg-codec but you tell QImage to use explicitly jpeg. I'm not 100% sure but I believe the headers are different. Try it with the default probe/guess of the image format. bool b1 = image->load("D:/Projects/FridgeMagnets3/src/f1.jpg");
- 
@Rapidrain Some question: - How did you install Qt (is it your own build or precompiled binary)?
- Not related to your problem: why do you allocate image on the heap using new operator (QImage image; would be enough)?
 
- 
@Rapidrain said in QImage doesn't take in a JPG: QImage* image = new QImage(); bool b1 = image->load("D:\\Projects\\FridgeMagnets3\\src\\f1.jpg", "jpeg"); if (b1 == true) { std::cout << "true " << std::endl; } else { // this guy always appears for *.jpg std::cout << "false " << std::endl; } setPixmap(QPixmap::fromImage(*image));your image is made with the jpg-codec but you tell QImage to use explicitly jpeg. I'm not 100% sure but I believe the headers are different. Try it with the default probe/guess of the image format. bool b1 = image->load("D:/Projects/FridgeMagnets3/src/f1.jpg");@J.Hilk I have used "jpg" and "jpeg" and "JPG" and "JPEG" and none of them work As you suggested, I left out the second argument completely and it still doesn't work. I am compiling this with MinGW using Eclipse Neon the Compile statements are : 15:15:53 **** Build of configuration Debug for project FridgeMagnets3 **** 
 MinGW32-make -f mf.Debug alld1 create obj/Debug/FridgeMagnets3d.o 
 D:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/FridgeMagnets3d.o src/FridgeMagnets3.cpp2a create obj/Debug/MyLabeld.o 
 D:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/MyLabeld.o src/MyLabel.cpp2b create src/moc_MyLabeld.cpp 
 D:/Qt64/qt-install/bin/moc.exe -DUNICODE -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -D__GNUC__ -DWIN32 -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' src/MyLabel.h -o src/moc_MyLabeld.cpp
 2c create obj/Debug/moc_MyLabeld.oD:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/moc_MyLabeld.o src/moc_MyLabeld.cpp 
 3a create obj/Debug/DragWidgetd.oD:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/DragWidgetd.o src/DragWidget.cpp 
 ^
 3c create obj/Debug/moc_MyLabeld.o
 D:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/moc_DragWidgetd.o src/moc_DragWidgetd.cppLink objects obj/Debug/FridgeMagnets3d.o obj/Debug/MyLabeld.o obj/Debug/moc_MyLabeld.o obj/Debug/DragWidgetd.o obj/Debug/moc_DragWidgetd.o 
 D:/MinGW/64/bin/g++ -Wl,-subsystem,windows -mthreads -o D:/Projects/FridgeMagnets3/bin/Debug/FridgeMagnets32d.exe obj/Debug/FridgeMagnets3d.o obj/Debug/MyLabeld.o obj/Debug/moc_MyLabeld.o obj/Debug/DragWidgetd.o obj/Debug/moc_DragWidgetd.o -LD:/Qt64/qt-install/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmain -lQt5Widgets -lQt5Core -lQt5Guiany libraries missing? 
- 
@J.Hilk I have used "jpg" and "jpeg" and "JPG" and "JPEG" and none of them work As you suggested, I left out the second argument completely and it still doesn't work. I am compiling this with MinGW using Eclipse Neon the Compile statements are : 15:15:53 **** Build of configuration Debug for project FridgeMagnets3 **** 
 MinGW32-make -f mf.Debug alld1 create obj/Debug/FridgeMagnets3d.o 
 D:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/FridgeMagnets3d.o src/FridgeMagnets3.cpp2a create obj/Debug/MyLabeld.o 
 D:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/MyLabeld.o src/MyLabel.cpp2b create src/moc_MyLabeld.cpp 
 D:/Qt64/qt-install/bin/moc.exe -DUNICODE -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -D__GNUC__ -DWIN32 -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' src/MyLabel.h -o src/moc_MyLabeld.cpp
 2c create obj/Debug/moc_MyLabeld.oD:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/moc_MyLabeld.o src/moc_MyLabeld.cpp 
 3a create obj/Debug/DragWidgetd.oD:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/DragWidgetd.o src/DragWidget.cpp 
 ^
 3c create obj/Debug/moc_MyLabeld.o
 D:/MinGW/64/bin/g++ -c -g -std=gnu++11 -pipe -fno-keep-inline-dllexport -O0 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I'D:/Qt64/qt-install/include' -I'D:/Qt64/qt-install/include/QtWidgets' -I'D:/Qt64/qt-install/include/QtGui' -I'D:/Qt64/qt-install/include/QtCore' -I'D:/Qt64/qt-install/qtbase/include/QtWidgets' -I'D:/Qt64/qt-install/qtbase/include/QtGui' -I'D:/Qt64/qt-install/qtbase/include/QtCore' -I'D:/Projects/FridgeMagnets3/obj/Debug' -I'D:/Projects/FridgeMagnets3/src' -I'D:/Projects/FridgeMagnets3' -o obj/Debug/moc_DragWidgetd.o src/moc_DragWidgetd.cppLink objects obj/Debug/FridgeMagnets3d.o obj/Debug/MyLabeld.o obj/Debug/moc_MyLabeld.o obj/Debug/DragWidgetd.o obj/Debug/moc_DragWidgetd.o 
 D:/MinGW/64/bin/g++ -Wl,-subsystem,windows -mthreads -o D:/Projects/FridgeMagnets3/bin/Debug/FridgeMagnets32d.exe obj/Debug/FridgeMagnets3d.o obj/Debug/MyLabeld.o obj/Debug/moc_MyLabeld.o obj/Debug/DragWidgetd.o obj/Debug/moc_DragWidgetd.o -LD:/Qt64/qt-install/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmain -lQt5Widgets -lQt5Core -lQt5Guiany libraries missing? @Rapidrain Your own build? That could explain your problem: you probably do not have the JPEG plug-in. Check the content of the plugins/imageformats directory of your Qt set-up. 
 If you compile Qt by yourself you should check the output of the configure command: it will tell your what is going to be built and what not.
- 
@Rapidrain Your own build? That could explain your problem: you probably do not have the JPEG plug-in. Check the content of the plugins/imageformats directory of your Qt set-up. 
 If you compile Qt by yourself you should check the output of the configure command: it will tell your what is going to be built and what not.@jsulm the imageformats directory does (!) exist in the build. I found it last night. Now I wonder if I must include all of them in my compile and link statements, mention them in some manner. My link command was : 
 g++ -Wl,-subsystem,windows -mthreads -o D:/Projects/FridgeMagnets3/bin/Debug/FridgeMagnets32d.exe obj/Debug/FridgeMagnets3d.o obj/Debug/MyLabeld.o obj/Debug/moc_MyLabeld.o obj/Debug/DragWidgetd.o obj/Debug/moc_DragWidgetd.o -LD:/Qt64/qt-install/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmain -lQt5Widgets -lQt5Core -lQt5GuiI copied the two files qjpeg.dll and qjpegd.dll into a directory imageformats and placed it next to the executable. 
 Then I changed the link command to :g++ -Wl,-subsystem,windows -mthreads -o D:/Projects/FridgeMagnets3/bin/Debug/FridgeMagnets32d.exe obj/Debug/FridgeMagnets3d.o obj/Debug/MyLabeld.o obj/Debug/moc_MyLabeld.o obj/Debug/DragWidgetd.o obj/Debug/moc_DragWidgetd.o -LD:/Projects/FridgeMagnets3/imageformats -LD:/Qt64/qt-install/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmain -lQt5Widgets -lQt5Core -lQt5Gui Note that I added the imageformats directory as a source of libraries in the link command. It didn't help though. 
- 
@jsulm the imageformats directory does (!) exist in the build. I found it last night. Now I wonder if I must include all of them in my compile and link statements, mention them in some manner. My link command was : 
 g++ -Wl,-subsystem,windows -mthreads -o D:/Projects/FridgeMagnets3/bin/Debug/FridgeMagnets32d.exe obj/Debug/FridgeMagnets3d.o obj/Debug/MyLabeld.o obj/Debug/moc_MyLabeld.o obj/Debug/DragWidgetd.o obj/Debug/moc_DragWidgetd.o -LD:/Qt64/qt-install/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmain -lQt5Widgets -lQt5Core -lQt5GuiI copied the two files qjpeg.dll and qjpegd.dll into a directory imageformats and placed it next to the executable. 
 Then I changed the link command to :g++ -Wl,-subsystem,windows -mthreads -o D:/Projects/FridgeMagnets3/bin/Debug/FridgeMagnets32d.exe obj/Debug/FridgeMagnets3d.o obj/Debug/MyLabeld.o obj/Debug/moc_MyLabeld.o obj/Debug/DragWidgetd.o obj/Debug/moc_DragWidgetd.o -LD:/Projects/FridgeMagnets3/imageformats -LD:/Qt64/qt-install/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmain -lQt5Widgets -lQt5Core -lQt5Gui Note that I added the imageformats directory as a source of libraries in the link command. It didn't help though. @Rapidrain Sure it exists, but does it contain the JPEG plug-in? It should be named like libqjpeg.so 
 You do not have to add any of them to your compile/link config!
 When deploying your app later you just need to make sure you deploy all needed plug-ins as well. See http://doc.qt.io/qt-5/linux-deployment.html
- 
@Rapidrain Sure it exists, but does it contain the JPEG plug-in? It should be named like libqjpeg.so 
 You do not have to add any of them to your compile/link config!
 When deploying your app later you just need to make sure you deploy all needed plug-ins as well. See http://doc.qt.io/qt-5/linux-deployment.html@jsulm there is qjpeg.dll in the imageformats directory but .... 
 libqjpeg.so is nowhere on my computers.
 I have used Qt for years and have countless versions here.
 I have never seed libqjpeg.so
- 
@jsulm there is qjpeg.dll in the imageformats directory but .... 
 libqjpeg.so is nowhere on my computers.
 I have used Qt for years and have countless versions here.
 I have never seed libqjpeg.so@Rapidrain Sorry forgot that you're on Windows. qjpeg.dll is what you need. 
 Try to start your app with QT_DEBUG_PLUGINS environment variable set to 1 (you can add it in QtCreator Run settings of your project).
- 
@Rapidrain Sorry forgot that you're on Windows. qjpeg.dll is what you need. 
 Try to start your app with QT_DEBUG_PLUGINS environment variable set to 1 (you can add it in QtCreator Run settings of your project).
- 
@Rapidrain When do it wherever you're developing. If you start your app from a terminal: QT_DEBUG_PLUGINS=1 && ./my_app
- 
@Rapidrain When do it wherever you're developing. If you start your app from a terminal: QT_DEBUG_PLUGINS=1 && ./my_app
- 
@jsulm said in QImage doesn't take in a JPG: QT_DEBUG_PLUGINS=1 && ./my_app I tried what you suggested, it doesn't help.  @Rapidrain Sorry, again forgot that you're on Windows: set QT_DEBUG_PLUGINS=1 ./my_app
- 
@Rapidrain Sorry, again forgot that you're on Windows: set QT_DEBUG_PLUGINS=1 ./my_app
- 
@jsulm said in QImage doesn't take in a JPG: QT_DEBUG_PLUGINS=1 guess what? 
 It doesn't help.
 Can you suggest a chain of options I must add to g++ when compiling and linking this code? @Rapidrain said in QImage doesn't take in a JPG: Can you suggest a chain of options I must add to g++ when compiling and linking this code? As I said before: there is no need to add any options to compiler/linker. The plug-ins are automatically loaded at runtime when needed. You either have some issues with your JPEG plug-in or with the picture you're trying to display. See http://doc.qt.io/qt-5/debug.html 
 After setting QT_DEBUG_PLUGINS your app should actually output a lot of text. Do you test a debug build?
- 
@Rapidrain said in QImage doesn't take in a JPG: Can you suggest a chain of options I must add to g++ when compiling and linking this code? As I said before: there is no need to add any options to compiler/linker. The plug-ins are automatically loaded at runtime when needed. You either have some issues with your JPEG plug-in or with the picture you're trying to display. See http://doc.qt.io/qt-5/debug.html 
 After setting QT_DEBUG_PLUGINS your app should actually output a lot of text. Do you test a debug build?
- 
@Rapidrain Did you build your app in debug or release mode? 
- 
@Rapidrain After setting QT_DEBUG_PLUGINS your app should actually output a lot of text. Do you test a debug build? the statement "set QT_DEBUG_PLUGINS=1" is not a communication with my app. It is a communication with the Windows Operating System. Why should my app output a "lot of text" ?? It hasn't even started yet. 
- 
@Rapidrain Did you build your app in debug or release mode? 
- 
@Rapidrain After setting QT_DEBUG_PLUGINS your app should actually output a lot of text. Do you test a debug build? the statement "set QT_DEBUG_PLUGINS=1" is not a communication with my app. It is a communication with the Windows Operating System. Why should my app output a "lot of text" ?? It hasn't even started yet. @Rapidrain said in QImage doesn't take in a JPG: It is a communication with the Windows Operating System wrong, it just sets an environment variable - Windows does not care about it at all. Qt checks this variable at runtime and if it is set it prints debug output while loading plug-ins. That's how environment variable work. You can see which variables are set executing "set" command on Windows. 
- 
@Rapidrain said in QImage doesn't take in a JPG: It is a communication with the Windows Operating System wrong, it just sets an environment variable - Windows does not care about it at all. Qt checks this variable at runtime and if it is set it prints debug output while loading plug-ins. That's how environment variable work. You can see which variables are set executing "set" command on Windows. 
 

