用PHP显示图像(Laravel)

时间:2016-11-20 21:47:23

标签: php laravel

我试图在PHP(Laravel)中显示png图像

到目前为止,我已经尝试了

$response =  Response::make(readfile(public_path() . 
"/img/$image_name.png", 200))->header('Content-Type', 'image/png');
return $response;

和这个

$file = public_path() . "/img/$image_name.png";
$im = imagecreatefrompng($file);
header('Content-Type: image/png');
imagePNG($im);
imagedestroy($im);

我总是得到这样的东西而不是实际的图像

�PNG  IHDR:�c PLTE����>tRNS�* �< pHYs���+uIDAT(�eұ� AJs *́[P૒��@8Ҍ��Y�:����s�A�"D�!B�"D�!B�"D�!C~����}��Q��N�+'��bP�.a&^O)%5Y\�L����.ޜ9��IEND�B`�

当我使用jpeg header和jpeg图像时,它开始在浏览器中显示实际图像,但由于某种原因它不适用于png图像。有没有人遇到类似的问题?

4 个答案:

答案 0 :(得分:3)

试试吧!保持简单:)

$img = file_get_contents(public_path('yourimage.jpg'));
return response($img)->header('Content-type','image/png');

答案 1 :(得分:2)

你应该使用laravel默认文件facade File::mimeType($path)找到mime dynamicaly,因为正如你所提到的那样它可以正常使用另一种图像类型,如jpeg。我想这可能会发生,因为有时我们更改文件扩展名以进行测试,或者文件可能会有一些问题与其标题等。您可以使用以下代码:

方法1使用Response::stream

$path = public_path() . "/img/$image_name.png";
$file = File::get($path);
$type = File::mimeType($path);
$response = Response::stream(function() use($file) {
  echo $file;
}, 200, ["Content-Type"=> $type]);

方法2使用Response::make

$path = public_path() . "/img/$image_name.png";
$file = File::get($path);
$type = File::mimeType($path);
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;

希望它会有所帮助。

答案 2 :(得分:0)

我建议你使用这个插件:http://image.intervention.io/

答案 3 :(得分:-1)

也许你忘了在服务器上安装php-gd扩展程序

sudo apt-get install php-gd

sudo yum install php-gd