我试图在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图像。有没有人遇到类似的问题?
答案 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。我想这可能会发生,因为有时我们更改文件扩展名以进行测试,或者文件可能会有一些问题与其标题等。您可以使用以下代码:
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]);
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