ImageMagick installing and exploring it, a good alternative for the GD library
Although PHP GD library handles basic image operations quite good, you have probably run into the limitations of GD library as well, it is often slow, memory intensive and a bit complicated to use for advanced image effects. ImageMagick however is a very good alternative. It is an opensource software suite licensed under a BSD style license from IM itself. ImageMagick provides in all functionality that can be accomplished with the GD library but even goes a step further with support for more advanced image edit techniques. An example of such a technique is the recently added “liquid scaling” feature, this is a content aware scaling option.
Click the image below to see an example of liquid scaling:
So how do I get such a result? Well with PHP GD library it would take a whole lot of code, thinking and beers to get a script that does the same without exceeding your memory_limit, with ImageMagick however it is just one simple command.
exec("convert inputimage.jpg -liquid-rescale 250x500%\! outputimage.jpg");
The nice thing about ImageMagick is that you can often accomplish very sophisticated image effects with just one command, you can also chain commands. Now although IM has a quite good documentation guide available you maybe just want to be able to perform basic image operations with IM without seeking your way trough the documentation all the time. Their are some PHP classes available that will make your life easier.
- PhMagick is a simple wrapper class and provides a set of methods to perform the mostly used image operations
- MagickWand is a PHP extension that allows to communicate with the IM api
- Imagick is also an extension
My personal favor is PhMagick or a home brew script, why? Well I like the idea of wrapper classes more, my code is somewhat more portable because I don’t have to install the IM extension on a server and another PHP extension to communicate with it, furthermore I think that using wrapper classes gives you more insight in IM itself, you will better understand what is going on, on the other hand you probably will spend some hours to figure out why the command is not doing what you expected it to do because you are missing a simple ! or ^ parameter option.
Personal experience on installing IM on the server
Some time ago I wanted to install IM on my new dev and live server, the dev server is running OSX and the live server is running a Fedora distribution. So the first step before I tried to install IM was to read the documentation (yeah I’m one of those guys that also actually reads the readme files and documentation 😉 of products). I followed the “Install from source” tutorial. So I started with the live server, after downloading and unpacking IM I ran the ./configure command immediately I was faced with the error “no acceptable c compiler found in $PATH”, now my Linux skills are far from topnotch, so after some googling I found out that the easiest way to fix this issue was to install GCC (GNU Compiler Collection) that already included a C compiler. After installing GCC and running the ./configure command everything went fine, IM was installed successfully. I wanted to test if it was working correctly so I tried to resize several images but again an error occurred “convert: no decode delegate for this image format”, okay perhaps I should read the documentation more carefully next time because before installing IM you should also install the image libraries that you will use. In my case this was “yum install libjpeg libjpeg-devel libpng libpng-devel libtiff libtiff-devel”, now again I needed to install IM again, not much work, but still something to remember when installing IM. On the dev OSX server installing ImageMagick was quite simple, I used a precompiled dmg and only needed to install the Apple XCode developer tools.
So to summarize:
Advantages of using ImageMagick:
- it uses less resources, forget about the memory_limit issues with PHP when using GD and large images
- it’s slighty faster (note: depending on the filetype and image size GD beats IM in speed when it comes to resizing
- Image Magick has support for more filetypes
- as I showed before, it is very simple to use
exec('convert "'.$sSourcePath.'" -resize '.$iWidth.'x"'.$sDestinationPath.'"');
- Some very nice features like liquid scaling or seam carving
Disadvantages of using Image Magick:
- you need to have full access to your server, it isn’t bundled with PHP
- compiling IM can give some trouble, you shouldn’t forget to get the image libraries you want to use
Useful links
https://t.me/Official_1xbet_1xbet/s/319
AlbertEnark
16 Oct 25 at 10:49 pm
https://t.me/Official_1xbet_1xbet/s/1519
AlbertEnark
16 Oct 25 at 10:53 pm
https://t.me/Official_1xbet_1xbet/s/1521
AlbertEnark
16 Oct 25 at 11:17 pm
https://t.me/Official_1xbet_1xbet/s/385
AlbertEnark
16 Oct 25 at 11:20 pm
https://t.me/Official_1xbet_1xbet/s/849
AlbertEnark
16 Oct 25 at 11:44 pm
https://t.me/Official_1xbet_1xbet/s/454
AlbertEnark
16 Oct 25 at 11:47 pm
https://t.me/Official_1xbet_1xbet/s/107
AlbertEnark
17 Oct 25 at 12:10 am
http://zencaremeds.com/# buy amoxil
Hermandug
17 Oct 25 at 12:10 am
https://t.me/Official_1xbet_1xbet/s/553
AlbertEnark
17 Oct 25 at 12:13 am
https://t.me/Official_1xbet_1xbet/s/408
AlbertEnark
17 Oct 25 at 12:36 am
https://t.me/Official_1xbet_1xbet/s/593
AlbertEnark
17 Oct 25 at 12:39 am
https://t.me/Official_1xbet_1xbet/s/604
AlbertEnark
17 Oct 25 at 1:01 am
https://t.me/Official_1xbet_1xbet/s/146
AlbertEnark
17 Oct 25 at 1:05 am
https://t.me/Official_1xbet_1xbet/s/354
AlbertEnark
17 Oct 25 at 1:33 am
Adoro o clima explosivo de JabiBet Casino, tem uma vibe de jogo que e puro tsunami. Os titulos do cassino sao um espetaculo a parte, com caca-niqueis de cassino modernos e envolventes. A equipe do cassino entrega um atendimento que e uma perola, dando solucoes na hora e com precisao. O processo do cassino e limpo e sem turbulencia, as vezes queria mais promocoes de cassino que arrasam. Em resumo, JabiBet Casino vale demais explorar esse cassino para os cacadores de slots modernos de cassino! Vale falar tambem a plataforma do cassino detona com um visual que e puro mar, torna o cassino uma curticao total.
jabibet|
zippyoctopus4zef
17 Oct 25 at 1:34 am
https://t.me/Official_1xbet_1xbet/s/617
AlbertEnark
17 Oct 25 at 1:57 am
https://t.me/Official_1xbet_1xbet/s/1349
AlbertEnark
17 Oct 25 at 2:01 am
https://t.me/Official_1xbet_1xbet/s/421
AlbertEnark
17 Oct 25 at 2:25 am
https://t.me/Official_1xbet_1xbet/s/1128
AlbertEnark
17 Oct 25 at 2:29 am
https://t.me/Official_1xbet_1xbet/s/924
AlbertEnark
17 Oct 25 at 2:52 am
https://t.me/Official_1xbet_1xbet/s/961
AlbertEnark
17 Oct 25 at 2:56 am
https://t.me/Official_1xbet_1xbet/s/450
AlbertEnark
17 Oct 25 at 3:21 am
https://t.me/Official_1xbet_1xbet/s/284
AlbertEnark
17 Oct 25 at 3:24 am
https://t.me/Official_1xbet_1xbet/s/65
AlbertEnark
17 Oct 25 at 3:48 am
https://t.me/Official_1xbet_1xbet/s/1090
AlbertEnark
17 Oct 25 at 3:51 am
https://t.me/Official_1xbet_1xbet/s/1346
AlbertEnark
17 Oct 25 at 4:15 am
https://t.me/Official_1xbet_1xbet/s/386
AlbertEnark
17 Oct 25 at 4:18 am
https://t.me/Official_1xbet_1xbet/s/514
AlbertEnark
17 Oct 25 at 4:40 am
https://t.me/Official_1xbet_1xbet/s/295
AlbertEnark
17 Oct 25 at 4:43 am
https://t.me/Official_1xbet_1xbet/s/546
AlbertEnark
17 Oct 25 at 5:06 am
https://t.me/Official_1xbet_1xbet/s/786
AlbertEnark
17 Oct 25 at 5:35 am
https://t.me/Official_1xbet_1xbet/s/473
AlbertEnark
17 Oct 25 at 5:39 am
https://t.me/Official_1xbet_1xbet/s/1055
AlbertEnark
17 Oct 25 at 6:03 am
ZenCare Meds com: ZenCare Meds com – ZenCare Meds
AndrewPal
17 Oct 25 at 6:05 am
https://t.me/Official_1xbet_1xbet/s/278
AlbertEnark
17 Oct 25 at 6:29 am
https://t.me/Official_1xbet_1xbet/s/594
AlbertEnark
17 Oct 25 at 6:32 am
https://t.me/Official_1xbet_1xbet/s/1548
AlbertEnark
17 Oct 25 at 6:57 am
https://t.me/Official_1xbet_1xbet/s/979
AlbertEnark
17 Oct 25 at 7:01 am
https://t.me/Official_1xbet_1xbet/s/60
AlbertEnark
17 Oct 25 at 7:24 am
https://t.me/Official_1xbet_1xbet/s/196
AlbertEnark
17 Oct 25 at 7:28 am
https://t.me/Official_1xbet_1xbet/s/173
AlbertEnark
17 Oct 25 at 7:50 am
https://t.me/Official_1xbet_1xbet/s/1383
AlbertEnark
17 Oct 25 at 8:16 am
https://t.me/Official_1xbet_1xbet/s/1503
AlbertEnark
17 Oct 25 at 8:20 am
https://t.me/Official_1xbet_1xbet/s/252
AlbertEnark
17 Oct 25 at 8:46 am
https://t.me/Official_1xbet_1xbet/s/840
AlbertEnark
17 Oct 25 at 9:11 am
https://t.me/Official_1xbet_1xbet/s/1177
AlbertEnark
17 Oct 25 at 9:15 am
https://t.me/s/Official_1xbet_1xbet/1777
Josephadvem
17 Oct 25 at 9:36 am
https://t.me/Official_1xbet_1xbet/1729
Josephadvem
17 Oct 25 at 10:02 am
https://t.me/Official_1xbet_1xbet/1847
Josephadvem
17 Oct 25 at 10:05 am
https://t.me/Official_1xbet_1xbet/1816
Josephadvem
17 Oct 25 at 10:32 am