ELEKTRO
CHEMIE
PROGRAMOVÁNÍ
FOTKY
BLOG
E-SHOP

Elektro

  • Novinky
  • Aktuality
  • PHP
  • MySQL
  • JavaScript
  • .NET
  • Download
  • Odkazy
  • Anketa
  • Návštěvní kniha
  • Mapa webu
  • O webu
  • RSS

  • © by Hugo moravec.zd@gmail.com

    Zmenšování obrázků pomocí PHP 2

    Úvod

    Dříve jsem popsal jednoduchý skript na zmenšování obrázků pomocí PHP. V tomto článku bych se chtěl zaměřit na trochu složitější situaci.

    Někdy je potřeba vytvořit systém, který bude automaticky vytvářet náhledy o zadané velikosti z obrázků, které mají různý poměr výška/šířka. Nejjednodušší je asi obrázek zmenšit tak, aby se poměr nezměnil a zbývající prostor vyplnit barnou pozadí.

    Postup

    Nejdřív si vytvoříme prázdný obrázek podle zadaných rozměrů. To je velmi jednoduché.

    $width = 800; //SIRKA NAHLEDU
    $height = 600; //VYSKA NAHLEDU
    $out = ImageCreateTrueColor ($width, $height);

    Poté musíme zjistit, který rozměr obrázku je větší a spočítat poměr šířka/výška. Poté větší rozměr obrázku nastavíme podle zadaných rozměrů náhledu a zbývající stranu dopočítáme pomocí poměru. // ZJISTENI VELIKOSTI OBRAZKU
    $name = 'img.jpg';
    $Image = getImageSize($name);

    //NEJDRIV OSETRIME PRIPAD, KDY JE VESTSIM ROZMEREM SIRKA
    if ($Image[0] >= $Image[1])
    {
      $width1 = $width;
      $height1 = $Image[1]*$width/$Image[0];
    }
    else
    {
      $height1 = $height;
      $width1 = $Image[0]*$height/$Image[1];
    }

    Dále si pomocí funkce ImageColorAllocate alokujeme barvu pozadí pro obrázek. V našem případě bílou (RGB: 255 255 255). Prvním parametrem funkce je obrázek a do dalších tří parametrů musíme zadat složky RGB kódy zvolené barvy. Touto barvou zaplníme celý obrázek funkcí ImageFill.

    $bgColor = imagecolorallocate($out, 255, 255, 255);
    imagefill($out, 0, 0, $bgColor);

    Nakonec načteme obrázek, který chceme zmenšit, zmenšíme ho a náhled uložíme na disk.

    $nameNew = 'thumb.jpg';

    $source = ImageCreateFromJpeg($name);
    ImageCopyResized ($out, $source,0,0,0,0,$width1,$height1,$Image[0],$Image[1]);
    ImageJpeg($out, $nameNew, 50);

    Celý skript je zde.

    $width = 800; //SIRKA NAHLEDU
    $height = 600; //VYSKA NAHLEDU
    $out = ImageCreateTrueColor ($width, $height);

    // ZJISTENI VELIKOSTI OBRAZKU
    $name = 'img.jpg';
    $Image = getImageSize($name);

    //NEJDRIV OSETRIME PRIPAD, KDY JE VESTSIM ROZMEREM SIRKA
    if ($Image[0] >= $Image[1])
    {
      $width1 = $width;
      $height1 = $Image[1]*$width/$Image[0];
    }
    else
    {
      $height1 = $height;
      $width1 = $Image[0]*$height/$Image[1];
    }

    $bgColor = imagecolorallocate($out, 255, 255, 255);
    imagefill($out, 0, 0, $bgColor);

    $nameNew = 'thumb.jpg';

    $source = ImageCreateFromJpeg($name);
    ImageCopyResized ($out, $source,0,0,0,0,$width1,$height1,$Image[0],$Image[1]);
    ImageJpeg($out, $nameNew, 50);

    Literatura