Změna velikosti obrázků – presenter

před 10 lety

Roman Ožana
Člen | 52
+
0
-

Jednoduchý presenter, který umí snadno změnit velikost obrázků a vrátit je na výstup (použití přímo v SRC)

<?php
/**
 * Image presenter with cache
 *
 * @author Roman Ozana, ozana@omdesign.cz
 */
class ImagePresenter extends BasePresenter {
    /**
     * Return resize image
     *
     * use : <img src="{$presenter->link('Image:Resize', 'photos/nette.png', 190, 140)}" />
     *
     * @param string $src
     * @param integer $width
     * @param integer $height
     */
    public function ActionResize($src, $width = 100, $height = NULL) {
    if (file_exists(WWW_DIR.'/'.$src)) {
        $cache_image = md5($src.$width.$height).'.jpg';
        // TODO add expiration date (in my case it was not needed)
        if (!file_exists(APP_DIR.'/temp/'.$cache_image)) {
        Image::fromFile($src)->resize( $width , $height )->save(APP_DIR.'/temp/'.$cache_image);
        }
        Image::fromFile(APP_DIR.'/temp/'.$cache_image)->send();
    } else {
        if (is_null($width)) $width = 100;
        if (is_null($height)) $height = $width;
        Image::fromBlank($width , $height)->send();
    }
    }

}
?>

Vloženo v dobré naději, že se to může někomu hodit :-)

Editoval Roman Ožana (23. 7. 2009 10:18)

před 10 lety

ViliamKopecky
Nette hipster | 231
+
0
-

Pozor! Nevyhodí ti md5($src.$width.$height) pro například $width=111, $height=11 a $width=11, $height=111 stejné výsledky? Doporučil bych třeba md5("$src.$width.$height").

před 10 lety

Ondřej Mirtes
Člen | 1539
+
0
-

enoice napsal(a):

Pozor! Nevyhodí ti md5($src.$width.$height) pro například $width=111, $height=11 a $width=11, $height=111 stejné výsledky? Doporučil bych třeba md5("$src.$width.$height").

Já bych použil jen nějaké String::webalize, ať vidím, co za obrázek to je.

A nešlo by to zpracovat jako helper? :)

před 10 lety

ViliamKopecky
Nette hipster | 231
+
0
-

LastHunter: jo no, md5 je docela nevhodný. Tamto byla jen první věc, které jsem si všim'