Změna velikosti obrázků – presenter
- Roman Ožana
- Člen | 52
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
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
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řebamd5("$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
LastHunter: jo no, md5 je docela nevhodný. Tamto byla jen první věc, které jsem si všim'