我使用zend框架2并尝试返回使用gd2库jpeg图像创建的。但它不起作用。你能看看我的代码是什么问题吗?我的代码通常使用普通的php运行,但是在zf2问题中?
class PictureController extends AbstractActionController
{
public function colorPaletteAction(){
....
....
//canvas created at above.
imagejpeg($canvas);
imagedestroy($canvas);
$response = $this->getResponse();
return $response->getHeaders()->addHeaderLine('Content-Type', 'image/jpeg');
}
}
答案 0 :(得分:2)
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。
答案 1 :(得分:0)
您将Content-Type标头设置为' image / png'而不是' image / jpeg'。
还尝试添加内容传输编码和内容长度标题:
$response->getHeaders()->addHeaderLine('Content-Transfer-Encoding', 'binary')
->addHeaderLine('Content-Length', mb_strlen($yourJpegContent));
我也没有看到你将实际内容添加到回复中:
$response->setContent($yourJpegContent);
其中$ yourJpegContent包含二进制图像数据。