2016-01-11 3 views
0

следующего кода в действии:Rendering изображения с Zend Framework 1

$this->_helper->layout->disableLayout(); 
$this->_helper->viewRenderer->setNoRender(true); 
$image = ... 
$this->getResponse()->setHeader('Content-type', 'image/png'); 
imagepng($image); 
imagedestroy($image); 

Это создает разбитое изображение на сервере, но отлично работает на локальном хосте.

Даже этот код в действии создает разбитое изображение:

header("Content-Type: image/png"); 
echo file_get_contents('.../test.png'); 

Также я пытался поставить эти 2 строки:

  1. в index.php: он отлично работает
  2. в Zend_Controller_Action: ответ на неисправное изображение
+0

Какой сервер содержимого возвращается? Вы можете посмотреть в инструментах разработчика -> network -> request. Возможно, сервер возвращает ошибку + изображение, поэтому браузер не может его отобразить. –

+0

@MaxP. нет ошибок в ответе: Код состояния: 200 OK, Content-Type: image/png –

+0

Нет, я имею в виду контент. Сохраните ответ на диск и откройте его с помощью любого редактора. Посмотрите, содержит ли он только двоичные данные. –

ответ

2
public function imgAction() 
{ 
    $this->_helper->layout->disableLayout(); 

    $img = file_get_contents("Your Image"); 
    $type = 'image/png'; 

    $response = $this->getFrontController()->getResponse(); 

    $response->setHeader('Content-Type', $type, true); 
    $response->setHeader('Content-Length', count($img), true); 
    $response->setBody($img); 

    $response->sendResponse(); 
    exit; 
} 

Пример взяты с http://zend-framework-community.634137.n4.nabble.com/Outputting-an-image-td655625.html#d1224890879000-12

+0

попробовал это. без изменений –

Смежные вопросы