Skala bilder med php och Imagick
17May08
Det är sällan jag kodar php numera, alldeles för sällan måste jag erkänna. Jag råkade ut för en diskussion kring att skala bilder med php och ImageMagick, oftast använder jag ImageMagick tillsammans med bash och kör det på min lokala dator. Resultatet av diskussionen blev att jag av ren nyfikenhet råkade skriva en mindre funktion som skalar om bilder till önskad storlek och lägger till en vit och en svart kant runt bilderna.
/*
* Desc: Liten funktion som skalar om bilder till önskad
* storlek och lägger till en vit och en svart kant.
* Coder: Fredrik Persson
* E-mail: perrascout@linux.se
* Download/webpage: http://perra.wordpress.com
* Licens: BSD
*/
function resize($file, $size)
{
$source = new Imagick($file);
$dest = $source->clone();
$black = new ImagickPixel();
$white = new ImagickPixel();
$black->setColor("rgb(0,0,0)");
$white->setColor("rgb(256,256,256)");
if($dest->getImageWidth() < $dest->getImageHeight()){
$dest->scaleImage(0, $size, false);
$dest->borderImage($white, 6, 6);
$dest->borderImage($black, 32, 32);
}else{
$dest->scaleImage($size, 0, false);
$dest->borderImage($white, 6, 6);
$dest->borderImage($black, 32, 32);
}
$dest->writeImage("tn_$file");
}
Resultatet kan bli något i denna stilen:

Filed under: OpenSource, Programmering, Script | 4 Comments
Kom och tänka på ett bashsktipt jag använder när för att skala ner bilder. I den här versionen skalar den ned, skärper, lägger till en ram och lägger dit byline. Oftast använder jag den bara med skala ner + skärpeinställningarna.
#!/bin/bash
#
for i in “$@”; do
convert -scale 600×600 -filter Lanczos -unsharp 0.5×0.5+1.65+0.03 \
-border 2×2 -bordercolor black \
-font helvetica -pointsize 14 -draw “gravity SouthEast \
fill black text 7,12 ‘Foto: Ditt Namn ‘ \
fill #aaa text 8,11 ‘Foto: Ditt Mamn ‘ ” \
-border 1×1 -bordercolor grey \
-frame 4×4 -mattecolor black \
-quality 76 “$i” “ram_$i”
done
Tack för tipset.
//Fredrik
Coolt script! Skulle du bara kunna ge ett exempel på hur man använder functionen, alltså hur $size och $file variablerna ska innehålla. Sen en fråga, är Imagick inbäddat i php eller måste man installera det?
Imagick är en php modul som måste installeras seperat, hur du installerar det beror på Operativsystem och/eller Linux dist (se http://se.php.net/imagick ).
$file är sökvägen till den fil du vill manipulera.
$size är största önskade storlek på slutbilden
funktionen anropas i ett php script så här:
resize(minbild.jpg, 640);
//Fredrik