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:

About these ads


4 Responses to “Skala bilder med php och Imagick”

  1. 1 jules

    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

  2. Tack för tipset.

    //Fredrik

  3. 3 andreas

    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?

  4. 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


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.

%d bloggers like this: