2017-09-05 4 views
0

Chaque fois que j'essaye de charger une image, j'obtiens une erreur en disant CImg<unsigned char>::load(): Failed to recognize format of file. Cela se produit pour les fichiers jpg et png.Impossible de charger une image avec CImg

J'ai trouvé d'autres messages à ce sujet en disant pour définir cimg_use_png et cimg_use_jpeg, mais j'obtenir la compilation me errorstelling j'ai besoin png.n et jpeglib.h. Je ne suis pas sûr d'où je suis censé obtenir ces derniers.

Je ne sais pas où je me suis trompé, donc je ne sais pas quoi demander spécifiquement. Qu'est-ce qui ne va pas?

+0

Je ne l'ai pas fait fonctionner. J'ai trouvé une version pré-compilée de libjpeg, mais une fois que je l'ai configurée, l'erreur d'origine (Echec de la reconnaissance du format du fichier) est revenue. Je suis passé à stb_image à la fin. – Alex

+0

Désolé d'entendre ça. Quelle version de Windows utilisez-vous? Et utilisez-vous Visual Studio - si oui, quelle version? –

+0

Communauté Windows 10 et VS2017. J'utilise également la solution C++ vide par défaut. – Alex

Répondre

2

Si vous souhaitez ouvrir des images JPEG, vous devez installer libjpeg et compiler et lier par rapport à celui-ci.

Si vous souhaitez ouvrir les images PNG, vous devez installer libpng et libz (pour la compression) et les compiler et les lier par leur biais. À l'heure actuelle, vous devriez pouvoir utiliser des images au format NetPBM, c'est-à-dire PBM, PGM et PPM.


Eh bien, après deux jours douloureux d'essayer de comprendre comment la Terre Visual Studio 2017 fonctionne, et comment installer et intégrer libjpeg avec elle, je peux maintenant vous expliquer comment installer CImg et libjpeg sur Windows.

Étape 1

Vous devez avoir Visual Studio 2017 installé, ce qui signifie que vous avez besoin Windows 7 avec SP1 ou mieux. Lors de l'installation, assurez-vous d'inclure "Windows 8.1 SDK"

enter image description here

Étape 2

Télécharger libjpeg du IJG website. J'ai pris jpegsr9b.zip car c'est le dernier.

enter image description here

Étape 3

Décompressez le fichier et le stocker dans un répertoire appelé libjpeg dans votre répertoire.

Étape 4

Aller à Démarrer> Tous les programmes> Microsoft Visual Studio 2017> Visual Studio Tools> Commande développeur Demander VS2017

Accédez au répertoire que vous venez décompressé.Ce sera quelque chose comme ceci:

cd libjpeg 
cd jpeg-9b 

Étape 5

Maintenant, vous allez avoir besoin de trouver un fichier appelé win32.mak. J'ai trouvé le mien en C:\Program Files\Microsoft SDKs\Windows\v7.0\Include. Le vôtre peut être ailleurs si vous avez un SDK Windows 8.1. De toute façon, où que ce soit, vous devez ajouter son répertoire contenant à vos inclusions. Alors je l'ai fait:

set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v7.0\Include 

Étape 6 Maintenant

courir nmake pour obtenir votre SLN - un peu bizarre "solution" Microsoft fichier. La commande est:

nmake -f makefile.vc setup-v10 

et vous devriez obtenir un fichier appelé jpeg.sln - hourra!

Étape 7

maintenant commencer Visual Studio 2017, et ouvrez le fichier jpeg.sln vous venez de créer et de construire le projet. Il va créer un répertoire Release dans votre répertoire libjpeg et dans le répertoire Release vous trouverez jpeg.lib. Vous avez maintenant installé libjpeg.

enter image description here

Étape 8

Fermer ce projet, et commencer un nouveau projet de ligne de commande C et de rédiger votre programme basé CImg. J'ai écrit le plus simple jamais:

#define cimg_use_jpeg 
#include "CImg.h" 
using namespace cimg_library; 
int main() { 
    CImg<unsigned char> img("C:\\Users\\Mark\\test.jpg"); 
    img.display("Image"); 
    return 0; 
} 

Étape 9

Télécharger CImg.h de Github, et l'enregistrer dans un répertoire appelé CImg dans votre répertoire.

Étape 10

Maintenant dire Visual Studio où les fichiers à inclure (pour CImg et libjpeg) sont et où les fichiers de bibliothèque (pour libjpeg) sont:

enter image description here

Etape 11

Maintenant, dites Visual Studio 2017 que vous souhaitez créer un lien avec libjpeg:

enter image description here

Étape 12

Maintenant, vous pouvez compiler, lier et exécuter vos programme CImg et charger des fichiers JPEG et les afficher sur l'écran!

enter image description here


Si vous utilisez cmake sur Linux/macOS, this answer vous montre le chemin.


Si vous compilez sur macOS de la ligne de commande, vous aurez besoin d'avoir XQuartz installé si vous êtes d'afficher des images sur l'écran, et vous voulez quelque chose comme ceci:

g++ -std=c++11 sample.cpp -o sample -I /opt/X11/include -L /opt/X11/lib -lX11 -ljpeg -lpng -lz 
+0

J'ai mis à jour ma réponse avec des détails sur l'installation et le lien avec 'libjpeg' sous Windows. –