Afbeeldingen bewerken met ImageMagick
Afbeeldingen bewerken met ImageMagick
Accessify WCMS maakt het gebruikers mogelijk afbeeldingen te plaatsen in allerlei soorten content en modules. Afbeeldingen zorgen ervoor dat de website aantrekkelijker is en kunnen meer informatie bieden aan bezoekers.
Wanneer een gebruiker een afbeelding uploadt, wordt de afbeelding vrijwel altijd gecontroleerd op de juiste grootte en compressie en zo nodig aangepast.
Na verloop van tijd kwamen wij erachter dat de out-of-the-box-oplossing voor het bewerken van afbeeldingen niet meer voldoet wanneer er te veel of te grote afbeeldingen aangepast moesten worden. We zijn toen op zoek gegaan naar alternatieven. Omdat de applicatieserver JAVA eenvoudig ondersteunt, zijn we eerst gaan kijken naar mogelijkheden in die taal. Hoewel ze beschikbaar zijn, bleken ze toch niet voldoende. Uiteindelijk kwamen we uit bij ImageMagick.
ImageMagick
ImageMagick is software waarmee afbeeldingen bewerkt kunnen worden. Ook kan het gebruikt worden om informatie uit afbeeldingen te halen, zoals aantal kleuren of het gebruikte kleurprofiel.
Het is in principe een verzameling command line tools, die door ons CMS worden uitgevoerd, maar er zijn ook interfaces beschikbaar voor populaire programmeertalen, zodat de software gebruikt kan worden zonder expliciet een apart programma aan te roepen.
Alle tools staan in de programmafolder van ImageMagick, C:\Program Files\ImageMagick-6.9.1-Q16\ bijvoorbeeld.
Bewerkingen
Het Accessify WCMS gebruikt ImageMagick met name om afbeeldingen te schalen (groter of kleiner maken) en om het aantal kleuren te bepalen, zodat een geoptimaliseerde versie van het geüploade bestand getoond wordt.
Schalen
Om afbeeldingen te schalen wordt gebruikgemaakt van convert.exe. Een simpel voorbeeld is:
convert sigmasolutions.gif -resize 64x64 sigmasolutions_geschaald.gif
Met deze bewerking zorg je ervoor dat een bepaalde afbeelding wordt geschaald naar 64 bij 64 pixels (maar rekening houdend met aspectratio, zie hieronder voor meer daarover). Deze nieuwe, geschaalde afbeelding wordt opgeslagen als het bestand resize_dragon.gif. Wil je het bronbestand aanpassen, maak dan gebruik van de tool mogrify.exe, dat hetzelfde kan als convert.exe, maar het bronbestand overschrijft.
Er zijn verschillende opties bij het schalen, zoals:
- Aspectratio negeren: In bovenstaand voorbeeld wordt de afbeelding geschaald naar een afmeting van 64 bij 64 pixels, tenzij de originele verhouding anders is. In dat geval wordt de afbeelding passend geschaald. Je kan dit negeren (en er dus voor zorgen dat de verhouding van de originele afbeelding eventueel aangepast wordt) door \! achter het resize-argument te plaatsen, zoals: convert sigmasolutions.gif -resize 64x64\! sigmasolutions _ geschaald.gif.
- Alleen afbeeldingen schalen die groter zijn: Normaal gesproken worden alle afbeeldingen geschaald, dus ook die kleiner zijn dan de nieuwe aangegeven afmetingen. Je kan ervoor zorgen dat alleen grotere afbeeldingen worden geschaald via \>, zoals: convert sigmasolutions.gif -resize 64x64\> sigmasolutions _ geschaald.gif.
Bovenstaande voorbeelden zijn gekopieerd van de website van ImageMagick, waar je nog meer voorbeelden kan vinden.
Informatie over afbeelding
Informatie over afbeeldingen kan je met identify.exe ophalen. Om het aantal unieke kleuren in een afbeelding op te halen, gebruik je:
Identify –verbose –unique afbeelding.jpg
Deze tool geef output terug (met –verbose uitgebreide informatie) die uitgelezen kan worden. Het aantal kleuren staat in de regel Colors: <aantal kleuren>, wat je met bijvoorbeeld reguliere expressies kan opzoeken.
Zie voor meer informatie en voorbeelden de Basic Usage-pagina.
Interfaces
Zoals al benoemd, er zijn een aantal interfaces beschikbaar voor ImageMagick. Op de website staan deze aangegeven:
“The functionality of ImageMagick is typically utilized from the command-line or you can use the features from programs written in your favorite language. Choose from these interfaces:
G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), L-Magick(Lisp), Lua (LuaJIT), NMagick (Neko/haXe), Magick.NET (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick(Tcl/TK).
With a language interface, use ImageMagick to modify or create images dynamically and automagically.”
ImageMagick zorgt er kortom voor dat wij snel en gemakkelijk met afbeeldingen kunnen werken en wanneer er een oplossing in een andere omgeving gevraagd wordt, hoef je bepaalde code die met afbeeldingsbewerkingen te maken heeft nauwelijks te wijzigen.