如何在Laravel 4中返回带有图像的文本

时间:2015-09-30 07:55:13

标签: php image laravel intervention

我正在使用Laravel 4应用程序,我在我的控制器中编写了一个名为show()的方法,它从路径中获取id并从数据库中生成一些元素的数组,这些元素将与图像一起返回。 我可以使用Response::make()和标题返回没有文本的图像,但如果我将其与数据绑定则无法读取图像。

我尝试过这样的事情:

public function show($id){

    $onlineAd = OnlineAds::where('id', $id)->get(array('title', 'short_description', 'full_description'));

    $fileName = OnlineAds::find($id)->image;
    $path = 'app/storage/uploads/mobile/' . $fileName;

    return Response::json([
        "data" => $onlineAd,

        "Image"=> base64_encode(File::get($path))
    ]);
}

这样可以完美地返回数据,但图像将作为不可读的文本返回。 有什么建议?

2 个答案:

答案 0 :(得分:0)

我假设您已经不在视图中执行此操作,这就是我处理图像显示的代码的含义"

在将其插入src属性之前,您应该正确格式化图像有效负载 像这样改变这段代码:

return Response::json([
    "data" => $onlineAd,

    "Image"=> 'data:image/png;base64,' . base64_encode(File::get($path))
]);

在逗号后面加datamime type以及base64

相应地修改mime typeimage/pngimage/jpg

另请参阅此参考资料How to display Base64 images in HTML?

答案 1 :(得分:0)

我成功地制作了所需的输出,但仍不确定这是否是在图像旁边显示文字的最佳方式,

这是我的代码:

    $fileName = OnlineAds::find($id)->image;
    $path = 'app/storage/uploads/mobile/' . $fileName;
    $data=base64_encode(file_get_contents($path));
    $src= 'data: '.mime_content_type($path).';base64,'.$data;


    echo '<img src="' . $src . '" />';

    return Response::json([
        "data" => $onlineAd,

    ]);

所以,我回应了图像并返回了文本,如果你有一个更好的解决方案,在没有echo语句的情况下返回它们,那么请不要犹豫提供它。