Articles

WxWidgets et Magick++ v/s Qt : Mon expérience avec Photopal

Photopal est le nom d’une application de bureau simple sur laquelle j’ai travaillé. Les utilisateurs peuvent simplement glisser et déposer l’image et elle est convertie à la résolution préférée par l’utilisateur (par défaut 72dpi). Déposez un grand nombre d’images ou de dossiers et il les convertira efficacement.

J’ai créé cette application en utilisant deux bibliothèques populaires – wxWidgets et Qt. Je vais les expliquer tous les deux d’abord si quelqu’un veut les utiliser et ensuite je les comparerai tous les deux.

Comment utiliser WxWidgets dans Windows ?

Télécharger la source de wxWidgets à partir de https://www.wxwidgets.org/downloads/ . Dézippez le fichier que vous avez téléchargé.

Maintenant sous le dossier wxWidgets naviguez vers /build/msw .
Vous trouverez divers noms de projets visual studio comme wx_vc suivi par la version de visual studio par exemple pour visual studio 13 c’est wx_vc12 .
Ouvrez-le dans Visual Studio et compilez-le en utilisant la configuration que vous voulez pour par exemple la version en x64 .

Les fichiers correspondants seront créés dans le dossier wxWidgets sous le dossier include et lib respectivement. Les fichiers requis pour wxWidgets sont générés.

Pour l’inclure dans votre projet , ouvrez les propriétés de votre projet.
Sous les propriétés C/C++ – onglet Général , donnez le chemin de votre dossier (wxWidgets)/include et (wxWidgets)/include/msvc dans Répertoires d’inclusion supplémentaires.

Sous propriétés C/C++ – Préprocesseur – Définitions du préprocesseur , ajoutez WIN32 , WXUSINGDLL , _WXMSW , wxMSVC_VERSION_AUTO , _UNICODE et UNICODE.

Maintenant sous Linker – Général – Dépendances de la bibliothèque de liaison ajoutez le chemin vers votre dossier lib/vc qui contient vos fichiers dll e.par exemple vc120_x64_dll.
Sous Linker – Input – Additional Dependencies ajoutez les fichiers lib dont vous avez besoin par exemple wxmsw31u_core.lib , wxmsw31u_gl.lib et wxbase31u.lib.
WxWidgets est tout installé maintenant.

Comment utiliser Magick++ sous Windows?

Téléchargez la source de Magick++ https://www.imagemagick.org/script/download.phpet décompressez-la.

Pour créer un espace de travail correspondant à vos besoins, il suffit d’aller dans le dossier
VisualMagick\configure et d’ouvrir l’espace de travail configure.dsw (pour
Visual Studio 6) ou configure.sln (pour Visual Studio 7 ou 8).
Définissez la configuration de construction sur Release ou Debug. Construisez et exécutez le programme configure et suivez les instructions à l’écran.

Après une construction réussie, tous les fichiers requis pour exécuter
n’importe lequel des outils de ligne de commande sont situés dans le dossier VisualMagick\bin. Cela inclut les bibliothèques EXE, DLL et les fichiers de configuration ImageMagick.
Pour l’exécuter dans votre projet, il suffit de définir la référence aux fichiers d’en-tête (répertoire include) et aux fichiers lib (répertoire lib ) dans le studio visuel.
Ajoutez également CORE_RL_Magick++_.lib et CORE_RL_MagickCore_.lib aux dépendances supplémentaires sous Linker – Input .Copiez également les fichiers xml à l’emplacement de l’exécutable.

Vient maintenant la partie délicate , imagemagick ne fonctionne que sur les systèmes où il est déjà installé. Pour surmonter cette difficulté , il suffit de télécharger le fichier exe de imagemagick. Allez dans Program files/ imagemagick et copiez les fichiers dll dans le dossier coders. Maintenant, imagemagick est prêt à être exécuté.

Comment utiliser WxWidgets dans Ubuntu ?

Ouvrez le terminal et tapez
deb http://apt.wxwidgets.org/ natty-wx main
deb-src http://apt.wxwidgets.org/ natty-wx main

Pour ajouter la signature numérique tapez :
curl http://apt.wxwidgets.org/key.asc | sudo apt-key add –

Exécutez les commandes suivantes dans le terminal :
sudo apt-get update
sudo apt-get install wx2.8-headers libwxgtk2.8-0 libwxgtk2.8-dev
cd /usr/include
ls | grep wx
sudo ln -sv wx-2.8/wx wx

Ajouter `wx-config – cxxflags` `wx-config -libs` et les bibliothèques wxWidgets requises à la commande g++ lors de la compilation du projet WxWidgets.

Comment utiliser Magick++ dans Ubuntu ?

Ouvrez le terminal et construisez les éléments essentiels pour Magick++ comme:
sudo apt-get install build-essential checkinstall && apt-get build-dep imagemagick -y

Maintenant téléchargez l’ImageMagick en tapant:
sudo wget http://www.imagemagick.org/download/ImageMagick.tar.gz

Dézippez le tar :
sudo tar xzvf ImageMagick.tar.gz

Exécutez les commandes suivantes dans le terminal :
cd ImageMagick-7.0.4-5
./configure
make clean
make
checkinstall
ldconfig /usr/local/lib
ImageMagick est prêt à fonctionner sur votre système.

Approche 2 – Qt :

Comment utiliser Qt ?

Télécharger le Qt depuis le site officiel en utilisant l’installateur en ligne ou hors ligne – https://www.qt.io/download-open-source/

Après l’installation , ouvrir le Qt creator.Créez un projet Qt et exécutez-le en mode release ou debug.

Construisez un distribuable en Qt :
Allez dans la C:\Qt\(version)\(compilateur)\bin . par exemple C:\Qt\5.9.1\msvc2013_64\bin
Ouvrez le terminal à cet endroit et exécutez :
windeployqt (emplacement de votre fichier binaire) .
Votre exécutable distribuable ainsi que la dll requise sont automatiquement réalisés.

Comparaison De WxWidget et Magick++ vs Qt :

WxWidgets n’est qu’une bibliothèque de Gui et avait besoin de Magick++ pour le traitement des images alors que Qt en lui-même était une bibliothèque à part entière et contient divers utilitaires , dont l’un était le traitement des images. On peut facilement remarquer que l’utilisation de Qt est moins complexe que celle de WxWidgets. Même le code de Qt est simple à écrire et à comprendre.

Mais avec la facilité vient l’augmentation du niveau d’abstraction . Qt est beaucoup plus abstrait que WxWidgets qui était tout à fait perceptible quand j’ai travaillé sur pthread dans wxWidgets et le propre thread de Qt QThread. Ainsi, cela dépend de votre domaine d’application si vous voulez travailler avec Qt ou WxWidgets. Dans mon cas particulier cependant, Qt était un meilleur choix.

Si vous rencontrez des difficultés à mettre en œuvre l’une de ces bibliothèques , je serai heureux de vous aider.