使用 zend 框架在浏览器中直接显示图像

Displaying image directly in browser using zend framework

我正在尝试在直接浏览器中使用 Zend Framework 显示图像。我可以成功显示,但只能显示 PNG 格式。

这是我的代码,当我尝试访问 PNG 图像并在浏览器中显示图像时,它工作正常。

// disable the layout
$this->_helper->layout->disableLayout();

$file = 'http://framework.zend.com/images/PoweredBy_ZF_4LightBG.png';

$logo = file_get_contents($file); 

$type = 'image/png';

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

$response->setHeader('Content-Type', $type, true);
$response->setHeader('Content-Length', count($logo), true);
$response->setHeader('Content-Transfer-Encoding', 'binary', true);
$response->setHeader('Cache-Control', 'max-age=3600, must-revalidate', true);
$response->setBody($logo);

$response->sendResponse(); 
exit; 

再次:上面的代码工作正常并在浏览器中正确显示图像但是当我尝试 jpeg/jpg 图像时它给我消息:

图片“http://localhost/zfproject/activity/share/image”因包含错误而无法显示。

这是我用于 JPEG/JPG 图片类型的代码

// disable the view ... and perhaps the layout
$this->_helper->layout->disableLayout();

$file = 'http://localhost/zfproject/public/user/15/0015_19aa.jpg?c=5090';

$logo = file_get_contents($file); 

$type = 'image/jpg';

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

$response->setHeader('Content-Type', $type, true);
$response->setHeader('Content-Length', count($logo), true);
$response->setHeader('Content-Transfer-Encoding', 'binary', true);
$response->setHeader('Cache-Control', 'max-age=3600, must-revalidate', true);
$response->setBody($logo);

$response->sendResponse(); 
exit; 

我不知道可能是我做错了什么,我也试过 'image/jpeg' 类型,但它不起作用。

请指教。

提前谢谢你。

试试这个:

$this->_helper->layout->disableLayout();

$file = 'http://localhost/zfproject/public/user/15/0015_19aa.jpg?c=5090';

$logo = file_get_contents($file); 

$type = 'image/jpg';

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

$response->setHeader('Content-Type', $type, true);
$response->setHeader('Content-Transfer-Encoding', 'binary', true);
$response->setHeader('Cache-Control', 'max-age=3600, must-revalidate', true);
$response->setBody($logo);

$response->sendResponse(); 
exit;