Я использую следующий код в своем контроллере:
//function to protect images from being accessed directly. function getImage($img_id){ //code to authenticate user goes here then... $url = $this->data['base_url'].'system/application/images/c/thumbs/'; $filepath = $url.$img_id; header("Content-type: image/jpeg"); if(file_exists($filepath)){ echo "we are here"; $img_handle = imagecreatefromjpeg($filepath) or die(""); echo $img_handle; ImageJpeg($img_handle); } }
На мой взгляд, чтобы получить изображения, я использовал следующий код:
<img src='<?php echo base_url(); ?>index.php/Controller/getImage/obama.jpg' width="100px">
Теперь, даже если он входит в контроллер, он не отображает изображение. Файл Obama находится в правильном каталоге. Понятия не имею почему.
Ваша проблема заключается в том, что вы выводите текст в браузер, а затем изображение. Браузер попытается отобразить изображение, но он будет поврежден.
header("Content-type: image/jpeg"); if(file_exists($filepath)){ echo "we are here"; $img_handle = imagecreatefromjpeg($filepath) or die(""); echo $img_handle; ImageJpeg($img_handle); }
Кроме того, если вы хотите сделать echo
вы не можете отправить header
говорящий «эй, это изображение jpeg».
вы уверены, что изображение можно получить через $ this-> data ['base_url']. 'system / application / images / c / thumbs / obama.jpg, вы пытались получить доступ к нему в браузере, не так ли?
Кроме того, избегайте печати текста перед визуализацией изображения, это может привести к повреждению изображения.
Если все еще не работает, дайте нам знать скриншот страницы с ошибкой, что это значит.