Svar på FAQ fråga

Fråga: Hur skapar man minibilder?

Svar: Här kommer två olika sätt som du kan använda för att skapa minibilder.

(GD-library)?

Lite omständigt men eftersom de flesta har det installerat så kommer ett litet skript här:

Kod:
$stor_bild_url = "stor_bild.jpg";
$liten_bild_url = "liten_bild.jpg";
$liten_max_x = 100;
$liten_max_y = 100;
$liten_kvalite = 80;

// Läsen in den stora bilden och kollar storleken på den.
$stor_bild = imagecreatefromjpeg ($stor_bild_url);
$stor_x = imagesx ($stor_bild);
$stor_y = imagesy ($stor_bild);

// Räknar ut $k som är förhållandet mellan bredden och höjden.
$k = round ($liten_max_x / $stor_x);
if ($k * $stor_y > $liten_max_y) {
   $k = round ($liten_max_y / $stor_y);
}

// Räknar ut bredden och höjden på mini-bilden.
$liten_x = $k * $stor_x;
$liten_y = $k * $liten_y;

// Skapar mini-bilden.
$liten_bild = imagecreate ($liten_x, $liten_y);
imagecopyresampled ($liten_bild, $stor_bild, 0, 0, 0, 0, $liten_x, $liten_y, $stor_x, $stor_y);

// Sparar mini-bilden
imagejpeg ($liten_bild, $liten_bild_url, $liten_kvalite);

//Tar bort bilderna ur minnet på PHP. Tar inte bort bilderna från hårddisken.
imagedestroy ($liten_bild);
imagedestroy ($stor_bild);

Om du inte vill spara minibild utan visa bilden direkt så byt ut
imagejpeg ($liten_bild, $liten_bild_url, $liten_kvalite);
mot:
header ("Content-type: image/jpg");
imagejpeg ($liten_bild, , $liten_kvalite);


Saker att tänka på

  • imagecopyresampled() bara funkar i GD2. Har du bara GD1 så kan du använda imagecopyresized() vilket är lite snabbare men minibilden blir inte lika bra.
  • PHP måste ha skrivrättigheter i mappen där minibilden ska skapas.

(ImageMagick?)

Lättast är att använda ImageMagick?. Ett gratis program som går att köra från kommandopromten.

Kod:
$stor_bild_url = "stor_bild.jpg";
$liten_bild_url = "liten_bild.jpg";
$liten_max_x = 100;
$liten_max_y = 100;
$liten_kvalite = 80;

system ("/usr/X11R6/bin/convert -size ". $liten_max_x . "x" . $liten_max_y . " $stor_bild -resize "
    . $liten_max_x . "x" . $liten_max_y . " -quality " . $liten_kvalite . " $liten_bild");

Saker att tänka på

  • Sökvägen till convert varierar mellan server och server,
  • PHP måste ha skrivrättigheter i mappen där mini-bilden ska skapas.

Kommentar
Inte något av kodexemplena är testade så funkar den inte så kan väl någon säga till. Planen är att lägga info om (GD-library)? och ImageMagick? för sig och inte i detta dokumentet.
Wiki-navigering
Wiki Index
Wiki Artiklar
Wiki Skolan
Wiki Guider
Wiki FAQ
Webbhotell
Domänregistrering
Wiki-sökning
Sök:
Dokumentalternativ
Redigera dokumentet
Visa dokumenthistorien
Senaste wiki-ändringar
Visa ändringarna
Inställningar
Wiki inställningar
Bra att veta
Vad är en Wiki?
Våra förhållningsregler
Trivselregler
Att använda Wikin
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB 2.0.4 © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic