Změna velikosti obrázků – presenter

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
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)

ViliamKopecky
Nette hipster | 230
+
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").

Ondřej Mirtes
Člen | 1536
+
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? :)

ViliamKopecky
Nette hipster | 230
+
0
-

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