2014-06-26 1 views
0

Я использую zend framework 2 и пытаюсь вернуть созданное изображение jpeg библиотеки gd2. но это не сработает. не могли бы вы посмотреть мой код, в чем проблема? Мой код запускается с обычным PHP в обычном режиме, но в zf2 проблема?return dynamic image zf2

+0

Вы отключите макет и просмотр в ... коде, который вы не показывали? –

+0

да, я пробовал это, но он doeesn't не работает :( – Yargicx

+0

$ response = $ this-> getResponse(); $ response-> getHeaders() -> addHeaderLine ('Content-Type', 'image/JPEG '); $ ViewModel = новый ViewModel(); $ viewModel-> setTerminal (истина); возвращение $ ViewModel, – Yargicx

ответ

0

Вы задаете заголовок Content-Type 'image/png' вместо 'image/jpeg'.

Также попробуйте добавить контент-Transfer-Encoding и Content-Length заголовки:

$response->getHeaders()->addHeaderLine('Content-Transfer-Encoding', 'binary') 
         ->addHeaderLine('Content-Length', mb_strlen($yourJpegContent)); 

Я также не вижу, вы добавив фактическое содержание в ответ:

$response->setContent($yourJpegContent); 

где $ yourJpegContent содержит данные двоичного изображения.

1

imagejpeg выводит данные, которые вы не хотите делать. Вы можете либо использовать выходной буфер для захвата этих данных, либо сначала записать его в файл. Выходной буфер, вероятно, самый простой:

public function colorPaletteAction() 
{ 
    // [create $canvas] 

    ob_start(); 
    imagejpeg($canvas); 
    $imageData = ob_get_contents(); 
    ob_end_clean(); 

    imagedestroy($canvas); 

    $response = $this->getResponse(); 

    $response->getHeaders()->addHeaderLine('Content-Type', 'image/jpeg'); 
    $response->setContent($imageData); 

    return $response; 
} 

Если это не работает, временно закомментируйте строку заголовка Content-Type, чтобы увидеть, что выход вы получаете. Убедитесь, что на выходе нет ошибок или HTML.

+0

он не работает .. я сделаю это с простой PHP не ZF2 – Yargicx