In het vorige artikel over Imagemagick gebruikten we deze software om tekst en borders toe te voegen in afbeeldingen en andere basis beeldbewerkingen. In dit artikel zullen we de ImageMagick utilies gebruiken om een multi-image mozaiek te maken, sommige basisvormen te tekenen en 3D logo's te maken Wil je echt kunnen volgen wat er gebeurt in deze handleiding, is het zeer aan te raden de stappen simpelweg uit te voeren, en dan te vervangen door eigen creativiteit.
Superimposing afbeeldingen
Afbeeldingen over elkaar heen plakken noemen we superimposing. Door deze techniek te gebruiken kunnen we de vierkante hoeken van een afbeelding omvormen tot ronde hoeken (of willekeurig elke andere vorm), simpelweg door een transparante vorm eroverheen te plakken. Om deze afbeelding er op de juiste plek er overheen te plaatsen gebruiken we de composite utility in combinatie met de -grafity parameter die de positie definieert.
composite -gravity SouthEast curve_se.png image.png curved-se.png
Dit commando superimposes de gebogen hoek links onder op de hoek linksonder van de originele foto. We kunnen het resultaat gebruiken als source foto voor het volgende commando toe te passen op andere hoeken:
composite -gravity NorthEast curve_ne.png curved-se.png curved-ne.png
composite -gravity NorthWest curve_nw.png curved-ne.png curved-nw.png
composite -gravity SouthWest curve_sw.png curved-nw.png curved-sw-final.png
De -gravity parameter heeft overigens nog meer opties die gebruikt kunnen worden op afbeeldingen te plaatsen.
Mozaiek
Je kunt een mozaiek maken met de superimpose techniek door ze op een basisafbeelding te plaatsen op verschillende posities. Door in plaats van de -gravity parameter met zijn vaste positionering, de parameter -geometry te gebruiken op de locaties aan te duiden.
Als eerste stap maken we een canvas (basisvorm) om op te werken, en we geven deze met de xc parameter een kleur:
convert -size 200x200 xc:wheat multiple.png
composite -geometry +15+30 1.gif multiple.png multiple.png
composite -geometry +19+20 2.gif multiple.png multiple.png
composite -geometry +12+28 3.gif multiple.png multiple.png
Omdat ImageMagick eerst alle 'invoer' afbeeldingen leest voordat de 'uitvoer' afbeeldingen geopend worden, kan het steeds opnieuw werken op dezelfde 'invoer' afbeelding.
Als een afbeelding de grootte van de basisafbeelding overschrijft, wordt dit weggesneden. Om dit probleem te vermijden, gebruik je de -mosaic parameter, die automatisch een basisvorm maakt die groot genoeg is om alle afbeeldingen te bevatten. De kleur van de basisafbeelding in dit geval wordt gespecificeerd door de -background parameter.
convert -size 200x120 xc:black -fill white -draw 'circle 65,60 28,60' \
-draw 'circle 135,60 172,60' -draw "rectangle 65,23 135,97" \
-gaussian 1x1 +matte basic.png
Meer mogelijkheden om multi-image mozaieken te maken vind je elders op het web.
Imagemagick maakt het mogelijk om je vormen te laten tekenen zoals een rectangle, cirkel, ellips en poligon, vanaf de commandline met behulp van de utility convert met de -draw parameter. Gebruik de -fill parameter om de vorm te vullen met kleur en de -stroke parameter om de lijnen kleur te geven.
Om een rectangle te tekenen, moet je de links-onder en de rechts-onder coordinaten opgeven:
convert -size 120x60 xc:wheat -fill white \
-stroke black -draw "rectangle 25,10 95,50" rect.gif
Je kunt ook een round-rectangle maken met gebogen hoegen. In dat geval moet je naast de links-boven en de rechts-onder coordinaten ook de breedte (20) en de hoogte van de hoeken (12) op geven.
convert -size 120x60 xc:wheat -fill blue -stroke black \
-draw "roundrectangle 25,10 95,50 20,12" rrect.gif
Een boog vereist een start en een eindpunt en het aantal graden van de rotatie (65,250):
convert -size 120x60 xc:blue -fill white -stroke black \
-draw "arc 90,4 40,50 65,250" arc_partial.png
Om een ellips te tekenen gecentreerd om een opgegeven punt (45,18):
convert -size 120x60 xc:magenta -fill white -stroke black \
-draw "ellipse 60,30 45,18 0,360" ellipse.png
Een polygon heeft op zijn minst 3 coordinaten nodig:
convert -size 100x60 xc:skyblue -fill white -stroke black \
-draw "polygon 40,30 20,70 90,40 110,70" polygon.gif
3D logos maken
Nu dat we de basisvaardigheden kennen, is het ontwerpen van logos gemakkelijk. Maak elke vorm, voeg wat kleuren toe, schrijf enkele woorden, en je hebt een logo. ImageMagick kan zelfs schaduw en lichtval toevoegen zodat je logo een 3D-look krijgt.
De eerste stap is het maken van de vorm voor het logo. Bijvoorbeld twee rectangels die twee cirkels overlappen zodat je een capsule vorm krijgt.
convert -size 200x120 xc:black -fill white -draw 'circle 65,60 28,60' \
-draw 'circle 135,60 172,60' -draw "rectangle 65,23 135,97" \
-gaussian 1x1 +matte basic.png
De +matte parameter vertelt ImageMagick om de matte channel van het kanaal te negeren. Dit kanaal wordt gebruikt om de transparantie van een afbeelding te bepalen. Vervolgens voegen we wat kleur en tekst toe, wat uiteindelijk leidt tot een 2D logo.
convert basic.png -fill blue -draw 'color 0,0 reset' \
basic.png +matte -compose CopyOpacity -composite \
-font Helvetica -pointsize 20 -fill white \
-gravity center -annotate 0x0 "Blue Pill" 2D.png
Met de -draw 'color 0,0 reset', wordt color gebruikt om de kleur van een pixel te veranderen. Er zijn verschillende manieren om een kleur te veranderen, bijvoorbeeld met point, replace, floodfill en reset. Reset veranderd de kleur van alle pixels te beginnen vanaf de gespecificeerde coordinaten.
De CopyOpacity optie samen met de -compose parameter kopieert het transparantie kanaal van de oorspronkelijke afbeelding naar het resultaat.
Tekst wordt toegevoegd met de -annotate parameter, samen met de -gravity parameter om de positie te bepalen.
Laten we nu wat 3D effecten toevoegen.
Blurring
Blurring (vervagen) is een veel gebruikte techniek bij het maken van 3D effecten. Als je namelijk het schaduw effect gebruikt zonder eerst het blurring effect toe te passen, eindig je met hele scherpe randen (beveled effect). Door eerst de randen de vervagen van het basis effect, maak je mooie zachte randen die de afbeelding mooi rond maken.
convert basic.png -blur 0x4 -blur 0x4 -blur 0x4 \
-blur 0x4 +matte blurred.png
De -blur en de -gaussian parameters hebben dezelfde argumenten nodig: [radius]x[sigma]. De sigma waarde beschrijft hoe veel je de afbeelding wilt afronden en de radius omschrijft op welke ruimte je het wilt toepassen.
Schaduw
We gaan wat lichtval (lightening effects) toevoegen, zodat het lijkt alsof de afbeelding onder een lamp is geplaatst. We doen dit twee keer op de zojuist aangemaakte blurred.png, een voor de top en een voor de bodem, of zo een donkere en een lichte ruimte te maken.
convert blurred.png -shade 90x0 -normalize light.png
convert blurred.png -shade 90x180 -normalize dark.png
De -normalize parameter wordt vaak in combinatie gebruikt met de -shade parameter om het contrast te verhogen.
Nu moeten we deze twee afbeeldingen combineren om de afbeelding met schaduw te krijgen. Geen gemakkelijk commando, maar het resultaat mag er zijn:
convert \( light.png \( +clone -fx 'rand()' -threshold -1 \) \
+swap +matte -compose CopyOpacity -composite \) \
\( dark.png \( +clone -threshold 100% \) \
+swap +matte -compose CopyOpacity -composite \) \
-compose Over -composite high_lighting.png
ImageMagick maakt het mogelijk om bewerkingen geisoleerd to te passen en vervolgens de resultaten te verwerken in de rest van het commando. Deze mogelijkheid, die image stack heet, is zeer bruikbaar als je bepaalde operaties alleen wilt gebruiken op sommige afbeeldingen in een serie. Een image stack is afgebakend door \( ... \).
De -threshold parameter bepaald de opacity (doorzichtigheid). De +swap parameter swapt de laatste 2 afbeeldingen in de huide serie afbeeldingen.
We hebben nu alle ingredienten van het 3D logo. Om deze toe te voegen aan het 2D logo, gebruiken we de -compose parameter.
convert 2D.png high_lighting.png -compose ATop -composite 3D.png
De ATop opte zorgt ervoor dat enkel en alleen die gedeeltes die boven de doelafbeelding vallen er overheen vallen.
Nu de final touch, zoals het toevoegen van een achtergrond.
convert 3D.png \( +clone -fx 'rand()' +matte -shade 120x45 \
-fill gray -fill beige -tint 120 \) \
-insert 0 -flatten bg_3D.png
+clone wordt gebruikt om een kopie te maken van de laatste afbeelding in de serie. Als je deze parameter niet gebruikt zal de uiteindelijke afbeelding alleen de achtergrond tonen die gemaakt wordt met rand(). -insert neemt de laatste afbeelding in de huidige serie afbeeldingen en plaatst het in de opgegeven index. In dit geval plaatst het onze 3D logo in het complete logo. En zie: het 3D logo is klaar.
Conclusie
Al spelend met de verschilende afbeeldingen en 3D effecten is geen gemakkelijke opgave, zelfs niet voor speciaal daarvoor gemaakte software. Hoewel ook het even kan duren voordat je ImageMagick beheerst, kun je uiteindelijk relatief eenvoudig dit soort dingen van de command-line af maken.





