några sidor på nätet om PHP programmering

Sök efter  
Börja här Uppgifter Testa dig själv Tips Sidokarta mm. Länkar Sök

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 );
?>
Listning 1.18.1 - samples/tumb.php
[Visa i separat fönster]

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&ouml;r f&ouml;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

   Börja härThumbnails