Kuvafunktiot PHP:ssä (GD)

Mureakuha

Loikkaa: valikkoon, hakuun

PHP:llä pystyy käsittelemään kuvia kätevästi GD-kirjaston avulla.

Uuden kuvan luominen

Uuden kuvan voit luoda funktiolla imagecreate(), tai vaihtoehtoisesti funktiolla imagecreatetruecolor(), jos käsitellään esim. valokuvia.

$kuva = imagecreate(150, 30); // Luodaan kuva jonka koko on 150x30 pikseliä
$bg = imagecolorallocate($kuva, 255, 255, 255); // Luodun kuvan taustaväri (val)
$teksti = imagecolorallocate($kuva, 255, 0, 0); // Teksin väri (pun)
imagestring($kuva, 2, 0, 0, "Hello, world!!", $teksti); // Kirjoitetaan kuvaan
 
header("Content-type: image/png");
imagepng($kuva); // Luodaan kuva selaimelle
imagedestroy($kuva); // Poistetaan kuva muistista 
 

Yllä esimerkki imagecreate() funktion käytöstä.

Kuvan luominen tiedostosta

Kuvan pystyy luomaan myös tiedostosta. Eri kuvaformaateille on eri funktiot. Yleisimmät PHP:ssä käytettävät funktiot kuvan luomiseen tiedostosta ovat imagecreatefromjpeg(), imagecreatefromgif() sekä imagecreatefrompng().

Funktio getimagesize() osaa kertoa myös kuvan tyypin, josta voidaankin soveltaa funktio, joka luo uuden kuvan käyttäen oikeaa funktiota:

function imagecreatefromfile($filu) {
  if (file_exists($filu)) {
    $tiedot = getimagesize($filu);
    $tiedot = $tiedot[2];
    if ($tiedot == 1) // GIF
      return imagecreatefromgif($filu);
    elseif ($tiedot == 2) // JPEG
      return imagecreatefromjpeg($filu);
    elseif ($tiedot == 3) // PNG
      return imagecreatefrompng($filu);
    else // Joku muu / ei kuva
      return false;
  }
  else 
    return false;
}

Esimerkki kuvan koon muuttamisesta:

$alkup = imagecreatefromjpeg("valokuva.jpeg"); // Luodaan kuva tiedostosta
$uus = imagecreatetruecolor(300,400);
 
imagecopyresampled($uus,$alkup,0,0,0,0,300,400,imagesx($alkup),imagesy($alkup));
 
header("Content-type: image/jpeg");
imagejpeg($uus); // Tulostetaan kuva selaimelle
imagedestroy($uus); // Poistetaan kuva muistista 
 

Geometriset kuviot

PHP:ssa on omat funktiot myös geometrisille kuvioille. Funktiolla imageline() pystyt piirtämään viivan kuvaan jonka olet luonut imagecreate() funktiolla.

$kuva = imagecreate(100,100); // Luodaan kuva
$bg = imagecolorallocate($kuva, 255, 255, 255);
$viiva = imagecolorallocate($kuva, 0, 0, 255); // Viivan väri
imageline($kuva, 0, 0, 100, 100, $viiva); // Piirretään viiva
 
header("Content-type: image/png");
imagepng($kuva); // Luodaan kuva
imagedestroy($kuva); // Poistetaan kuva muistista 
 

Funktiolla imagerectangle() voit piirtää suorakulmion kuvaan.

$kuva = imagecreate(100,100); // Luodaan kuva
$bg = imagecolorallocate($kuva, 255, 255, 255);
$kulma = imagecolorallocate($kuva, 0, 0, 0); // Viivan väri
imagerectangle($kuva, 0, 0, 99, 99, $kulma); // Piirretään suorakulmio
 
header("Content-type: image/png");
imagepng($kuva); // Luodaan kuva
imagedestroy($kuva); // Poistetaan muistista 
 

Funktiolla imageellipse() voit piirtää ellipsin kuvaan. Huomaa: Funktio on lisätty vasta PHP:n versioon 4.0.6 ja vaatii myös GD:n kirjaston 2.0.2

$kuva = imagecreate(400, 300); // Luodaan kuva
$bg = imagecolorallocate($kuva, 255, 255, 255);
$ellipsi = imagecolorallocate($kuva, 255, 0, 0); // Viivan väri
imageellipse($kuva, 200, 150, 300, 200, $ellipsi); // Piirretään ellipsi
 
header("Content-type: image/png");
imagepng($kuva); // Luodaan kuva
imagedestroy($kuva); // Poistetaan kuva muistista 
 


Tämä artikkeli on tynkä. Voit auttaa Kuhaa täydentämällä tämän sivun tietoja.
Henkilökohtaiset työkalut