Articles

WxWidgets en Magick++ v/s Qt : Mijn ervaring met Photopal

Photopal is de naam van een eenvoudige desktop applicatie waar ik aan gewerkt heb. Gebruikers kunnen de afbeelding gewoon slepen en neerzetten, waarna deze wordt geconverteerd naar de gewenste resolutie van de gebruiker (standaard 72 dpi). Drop een groot aantal afbeeldingen of mappen en het zal ze efficiënt converteren.

Ik heb deze applicatie gemaakt met behulp van twee populaire bibliotheken – wxWidgets en Qt. Ik zal ze beide eerst uitleggen als iemand ze wil gebruiken en dan zal ik ze beide vergelijken.

Hoe gebruik je WxWidgets in Windows ?

Download de wxWidgets broncode van https://www.wxwidgets.org/downloads/ . UnZip het bestand dat je gedownload hebt.

Navigeer nu onder de wxWidgets folder naar /build/msw.
Je zult verschillende visual studio projecten namen vinden als wx_vc gevolgd door visual studio versie b.v. voor visual studio 13 is het wx_vc12 .
Open het in Visual Studio en compileer het met de configuratie die je wilt voor b.v. release in x64 .

De corresponderende bestanden zullen worden aangemaakt in de wxWidgets folder onder include en lib folder respectievelijk. De benodigde bestanden voor wxWidgets worden gegenereerd.

Om het in je project op te nemen, open de eigenschappen van je project.
Onder C/C++ eigenschappen – Algemeen tabblad, geef het pad naar je (wxWidgets)/include en (wxWidgets)/include/msvc folder in Additionele Include Directories.

Onder C/C++ eigenschappen – Preprocessor – Preprocessor Definities , voeg WIN32 , WXUSINGDLL , _WXMSW , wxMSVC_VERSION_AUTO , _UNICODE en UNICODE toe.

Nu onder Linker – Algemeen – Link Library Dependencies voeg pad toe naar uw lib/vc map die uw dll bestanden bevat, bijv.bijv. vc120_x64_dll.
Voeg onder Linker – Input – Additional Dependencies de lib bestanden toe die je nodig hebt, bijv. wxmsw31u_core.lib , wxmsw31u_gl.lib en wxbase31u.lib.
WxWidgets is nu allemaal ingesteld.

Hoe gebruik je Magick++ in Windows?

Download de Magick++ broncode https://www.imagemagick.org/script/download.php en pak deze uit.

Om een werkruimte voor uw vereisten te maken, gaat u naar de map
VisualMagickconfigure en opent u de werkruimte configure.dsw (voor
Visual Studio 6) of configure.sln (voor Visual Studio 7 of 8).
Stel de build-configuratie in op Release of Debug.

Na een succesvolle build bevinden alle benodigde bestanden die nodig zijn om de opdrachtregeltools uit te voeren zich in de map VisualMagick\bin. Dit omvat EXE, DLL bibliotheken, en ImageMagick configuratie bestanden.
Om het in uw project uit te voeren hoeft u alleen maar de verwijzing naar de header bestanden (include directory) en lib bestanden (lib directory ) in de visual studio te definiëren.
Voeg ook CORE_RL_Magick++_.lib en CORE_RL_MagickCore_.lib toe aan de extra afhankelijkheden onder Linker – Input.Kopieer ook de xml bestanden naar de uitvoerbare locatie.

Nu komt het lastige gedeelte , imagemagick draait alleen op systemen waar het al is geinstalleerd. Om dit probleem op te lossen, download je gewoon het exe-bestand van imagemagick. Ga naar Program files/ imagemagick en kopieer de dll bestanden onder coders folder. Nu is imagemagick klaar om te draaien.

Hoe gebruik je WxWidgets in Ubuntu ?

Open de terminal en type
deb http://apt.wxwidgets.org/ natty-wx main
deb-src http://apt.wxwidgets.org/ natty-wx main

Om een digitale handtekening toe te voegen typ :
curl http://apt.wxwidgets.org/key.asc | sudo apt-key add –

Run de volgende commando’s in 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

Voeg `wx-config – cxxflags` `wx-config -libs` en de vereiste wxWidgets bibliotheken toe aan het g++ commando tijdens het compileren van het WxWidgets project.

Hoe gebruik je Magick++ in Ubuntu?

Open de terminal en bouw essentials voor Magick++ als:
sudo apt-get install build-essential checkinstall && apt-get build-dep imagemagick -y

Nu Download de ImageMagick door te typen:
sudo wget http://www.imagemagick.org/download/ImageMagick.tar.gz

Upin de tar :
sudo tar xzvf ImageMagick.tar.gz

Run de volgende commando’s in terminal :
cd ImageMagick-7.0.4-5
./configure
make clean
make
checkinstall
ldconfig /usr/local/lib
ImageMagick is klaar om op uw systeem te draaien.

Aanpak 2 – Qt :

Hoe gebruik je Qt?

Download Qt van de officiële website met behulp van de online of offline installer – https://www.qt.io/download-open-source/

Na installatie , open de Qt creator.Maak een Qt-project en voer het uit in de release- of debugmodus.

Bouw een distributable in Qt :
Ga naar C:\Qt(versie)\(compiler)\bin . b.v. C:\Qt5.9.1:\msvc2013_64\bin
Open hier de terminal en voer uit :
windeployqt (locatie van uw binaire bestand) .
Uw distributable executable samen met de benodigde dll wordt automatisch gemaakt.

Vergelijking van WxWidget en Magick++ vs Qt :

WxWidgets is slechts een Gui library en had Magick++ nodig voor Image processing terwijl Qt op zich een volwaardige library was en diverse utilities bevatte, waarvan image processing er een was. Men kan gemakkelijk opmerken dat het gebruik van Qt minder complex is dan WxWidgets . Zelfs de code voor Qt is eenvoudig te schrijven en te begrijpen.

Maar met gemak komt de toename in abstractieniveau . Qt is veel abstracter dan WxWidgets en dat was goed te merken toen ik werkte aan pthread in wxWidgets en Qt’s eigen thread QThread. Het hangt dus van je toepassingsgebied af of je met Qt of met WxWidgets wilt werken. In mijn geval was Qt echter een betere keuze.

Als je problemen ondervindt bij het implementeren van een van deze bibliotheken, help ik je graag.