Skapa Thumbnails med ImageMagick

ImageMagick LogoImageMagick är en mjukvara med syfte att skapa och ändra bilder, men skiljer sig från program som Photoshop. ImageMagick bygger på att du anropar programmet genom en kommandotolk, så som ”Command Promt” i Windows eller motsvarande i andra operativsystem. Detta kan man med PHP uppnå med funktionen system() eller exec().

Det jag ville uppnå var att skapa thumbnails (tumnaglar) av större bilder när de laddas upp till webbplatsen. Tumnaglarna skulle dessutom ha absoluta mått oavsett om bilden var vertikal eller horisontal, och samma förhållande som original-bilden så den inte känns ut- eller ihopdragen. Med andra ord så vill jag att så mycket som möjligt av orginalbilden finns med i tumnageln och resten klipps bort för att hålla rätt aspect ratio.

Kommando till ImageMagick i Windows:
convert ”C:\orginal-image.jpg” -thumbnail 150×100^^ -gravity center -crop 150×100+0+0 +repage -format jpg -quality 75 ”C:\thumbnail.jpg”

Kommando till ImageMagick i Linux/Unix:
convert ‘/home/orginal-image.jpg’ -thumbnail 150×100^ -gravity center -crop 150×100+0+0 +repage -format jpg -quality 75 ‘/home/thumbnail.jpg’

PHP-funktion med kommando för Windows:
system(”convert \”C:\\orginal-image.jpg\” -thumbnail 150×100^^ -gravity center -crop 150×100+0+0 +repage -format jpg -quality 75 \”C:\\thumbnail.jpg\””);

Skillnaden mellan Windows och Linux är inte mycket. Jag har för vana att använda  apostrof istället för citattecken i Linux. Samt att man är tvungen att att använda escape character ^ för anropet i Windows.

För att snabbt förklara vad som händer så anropas convert men orginal-image.jpg som bild att behandlas. -thumbnail förminskar bilden  med hjälp av geometrin som nämns efteråt (150×100) och tar bort all meta-data i bilden. 150×100 är storleken på bilen som önskas och operator ^ (^^ i Windows) berättar för ImageMagick att geometrin är minsta möjliga. Bredden och Höjden får alltså aldrig vara mindre än det, men så nära som möjligt. Detta gör att antingen bredden eller höjden har uppnåt storleken vi vill ha men att där finns rester att klippa bort på bilden. Vi sätter därför fokus i mitten av bilden med -gravity center och klipper ut en bild i 150×100 pixlar av det som är kvar med -crop 150×100+0+0. De andra parametrarna +repage -format jpg -quality 75 ser till att det blir en bildfil (det som kliptes ut med -crop) och inte två filer, formatet på tumnageln blir JPEG och kvaliteten är 75 av 100 (ett värde jag tycker är rimligt att använda).



Lämna en Kommentar

Läs riktlinjerna för kommentering innan du skriver.