|
1.18 Thumbnails
Jag har valt att börja lite "bakifrån" i denna
sektion. Koden som finns på denna sida är fungerande (om
du har PHP 4.0.6 eller nyare med GD-lib laddat), men den är okommenterad.
Idén är att när du fått programmet kopierat till
egen dator och testat att det verkar fungera, så söker du
fram alla använda funktioner på www.php.net.
Kommentera ditt program och fundera på ändringar. Några
ändringar som kan vara av intresse är:
- Kan du få thumbnailen att bli en annan storlek?
- Istället för att visa en förminskning av hela bilden
- kan du visa en del av den istället?
- Kan du byta typsnitt på (c) texten som kommer på bilden?
- Fungerar det med åöö i texten? Om inte - vad kan du göra
för att ändra detta?
- Kan man skriva "copyright-texten" på tvären?
- mm.
När du vet vad alla de använda funktionerna gör, och
kan ändra på parametrarna, så har du fått början
till PHP's bildbearbetningsmöjligheter.
Koden är såldes inte nödvändingtvis ett färdigt
program, utan snarare en experimentlåda för vidare tester...
Nedan finns ett php-program som du kan använda i sin helhet. Sätt
det i en lämplig katalog. Se även till att ha minst en bild
i samma katalog, och se till att denna bild är rätt stor -
större än 150*150 pixels. Nedanstående kod får
inte innehålla någon som helst html-kod, utan den skall bara
returnera en bild.
<?php
$ny_bild = imagecreatetruecolor( 150, 150 );
if( isset( $_REQUEST[ "bild" ] ) && file_exists( $_REQUEST[ "bild" ] ) )
{
$info = getimagesize( $_REQUEST[ "bild" ] );
if( $info[ 2 ] == 1 )
{
$gammal_bild = imagecreatefromgif( $_REQUEST[ "bild" ] );
}
elseif( $info[ 2 ] == 2 )
{
$gammal_bild = imagecreatefromjpeg( $_REQUEST[ "bild" ] );
}
elseif( $info[ 2 ] == 3 )
{
$gammal_bild = imagecreatefrompng( $_REQUEST[ "bild" ] );
}
imagecopyresampled( $ny_bild, $gammal_bild, 0, 0, 0, 0, 150, 150,
imagesx( $gammal_bild ) , imagesy( $gammal_bild ) );
$textfärg = imagecolorallocate( $ny_bild, 0, 0, 255 );
imagestring ( $ny_bild, 3, 10, 5, "(c) anders 2004", $textfärg );
}
else
{
$färg = imagecolorallocate( $ny_bild, 255, 255, 192 );
$linje_färg = imagecolorallocate( $ny_bild, 255, 0, 0 );
imagefill( $ny_bild, 0, 0 , $färg );
imageline( $ny_bild, 0, 0, imagesx( $ny_bild ), imagesy( $ny_bild ), $linje_färg );
imageline( $ny_bild, 0, imagesy( $ny_bild ), imagesx( $ny_bild ), 0, $linje_färg );
}
header( "Content-type: image/jpeg" );
imagejpeg( $ny_bild );
?>
Exempel på användning av ovanstående program. Modifiera
bildfilens namn så att det fungerar med ditt data.
<html>
<head>
<title></title>
</head>
<body>
<!-- min bild och kod finns i samples katalogen -
din kanske finns i samma katalog
tag i så fall bort ./samles/ i nedanstående exempel -->
<p>Klicka på bilden för förstoring</p>
<p>
<a href="./samples/map_fixad.jpg" target="_new">
<img src="./samples/tumb.php?bild=map_fixad.jpg" border="0">
</a>
</p>
<p>
<a href="./samples/finns_inte.jpg" target="_new">
<img src="./samples/tumb.php?bild=finns_inte.jpg" border="0">
</a>
</p>
</body>
</html>
Listning 1.18.2 - samples/stumb.php
Klicka på bilden för förstoring
Resultat av listning 1.18.2
|