Aby pokazać obrazek w locie (np. miniaturka, ze znakiem wodnym), w PHP tworzymy obrazek, podajemy typ mime oraz wysyłamy do przeglądarki:
header('Content-type: image/jpeg'); $img = imagecreatefromjpeg('plik.jpeg'); imagejpeg($img); imagedestroy($img); |
W Kohana wygląda to tak:
W kontrolerze np. obrazek.php dodajemy akcję action_render(). Podobnie, jak w czystym PHP, musimy utworzyć obrazek z pliku, podać typ wysyłanych danych, wysłać je w nagłówkach oraz zwrócić wyrenderowany obrazek:
<?php defined('SYSPATH') or die('No direct script access.'); class Controller_Obrazek extends Controller { public function action_render(){ $this->request->headers['Content-type']='image/jpeg'; $this->request->send_headers(); $img=Image::factory('media/images/obraz.jpg'); $this->request->response=$img->render('jpg'); } } |
Wywołujemy następująco:
<?php echo Html::image('obrazek/render'); ?> |
W ten sposób można również ukryć ścieżkę do zdjęć.
Oczywiście można przekazać do akcji dowolny obrazek:
<?php echo Html::image('obrazek/render/' . $nazwa_pliku); ?> |
<?php defined('SYSPATH') or die('No direct script access.'); class Controller_Obrazek extends Controller { public function action_render(){ $nazwa_pliku=$this->request->param('id'); //zależnie od ustawień w bootstrap.php $this->request->headers['Content-type']='image/jpeg'; $this->request->send_headers(); $img=Image::factory('upload/' . $nazwa_pliku); $this->request->response=$img->render('jpg'); } } |
Niestety dla Kohana 3.1 powyższe postępowanie nie działa. Po wyświetleniu adresu http://mojawitryna.pl/obrazek/render wyświetla się pusta strona.
OdpowiedzUsuńJakiś pomysł ?
Firebug zwraca content-type tej pustej strony jako text/html a nie image/jpeg.
Plik na pewno istnieje, bo jak podałem złą ścieżkę, to wyskakiwał error, że plik nie jest obrazkiem. Czyli klasa też się załadowała poprawnie.
Proszę o pomoc.
Spróbuj zamienić
OdpowiedzUsuń$this->request->response=$img->render('jpg');
na
$this->response->body($img->render('jpg'));
Jest to opisane na
http://kohanaframework.org/3.1/guide/kohana/upgrading