ELEKTRO
CHEMIE
PHP
FOTKY

PHP

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

  • © by Hugo z_moravec (et) yahoo (dot) com

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

    Úvod

    Zmenšování obrázků se hodí, pokud připravujete třeba galerii nebo fotografickou soutěž. Pokud máte na serveru PHP zkompilované s podporou GD knihovny,[1] máte k dispozici velké množství funkcí pro manipulaci s obrázky.[2]

    Chtěl bych popsat jednoduchý skript, který nahraje obrázek na server a automaticky vytvoří náhled.

    Upload obrázku na server

    Prvním krokem je vytvoření jednoduchého HTML formuláře. Je zde jen jediný háček, element form musí obsahovat atribut enctype="multipart/form-data". To je nutné, protože budeme na server přenášet binární data (obrázek).

    První část skriptu resize.php se stará o upload obrázku. Nejprve je nutné ověřit, že se uživatel nesnaží nahrát na server soubor, který by mohl být nebezpečný (např. php skript). Proto je na začátku skriptu definováno pole, které obsahuje povolené koncovky souborů ($cfg_Extensions). Ověření provedeme jednoduše pomocí funkce In_Array().[3]  Příponu souboru zjistíme pomocí funkce PathInfo().[4]

    $cfg_Extensions = Array ('png', 'jpg', 'jpeg');

    $path = PathInfo($_FILES['File']['name']);

    if (!In_Array(StrToLower($path['extension']), $cfg_Extensions))
    {
      print 'Vkládaný soubor není obrázek!';
      exit;
    }

    A pokud je vše v pořádku, tak přesuneme soubor z tempu do žádaného adresáře.[5]

    Move_Uploaded_File($_FILES['File']['tmp_name'], './'.$Name);

    Vytvoření náhledu

    Nejdřív musíme spočítat rozměry náhledu. V proměnné $cfg_Scale je uloženo požadované měřítko. Funkcí getImageSize()[6] zjistíme rozměry původního obrázku a vynásobíme je měřítkem.

    $cfg_Scale = 0.3;

    $Image = getImageSize($Name);

    $NewWidth = $Image[0]*$cfg_Scale;
    $NewHeight = $Image[1]*$cfg_Scale;

    Na závěr vytvoříme náhled. V tomto okamžiku se kód větví, protože pro každý formát obrázku musíme použít jiné funkce. Popíšu jen jednu větev. Druhá je až na použité funkce stejná.

    //VYTVOŘENÍ NOVÉHO OBRÁZKU PRO NÁHLED
    $out = ImageCreateTrueColor ($NewWidth, $NewHeight);

    // NAČTENÍ PŮVODNÍHO OBRÁZKU
    $source = ImageCreateFromJpeg ($Name);

    // ZMENŠENÍ
    ImageCopyResized ($out, $source,0,0,0,0,$NewWidth,$NewHeight,$Image[0],$Image[1]);

    // ULOŽENÍ OBRÁZKU NA DISK
    // NÁZEV OBRÁZKU BUDE ZAČÍNAT PREFIXEM thumb-
    ImageJpeg ($out, './thumb-'.$Name, 50);

    // UVOLNĚNÍ PAMĚTI
    ImageDestroy($out);
    ImageDestroy($source);

    Závěr

    A to je celé. Oba dva soubory si můžete stáhnout zde (zip, 1,1 kB).

    Literatura

    FORMÁT PRO TISK    

    Poslední změna: 21.05. 2006 21:42

    Líbí se Vám tento článek?