如何在 Laravel PHP 中显示 SQLSRV 图像

Posted

技术标签:

【中文标题】如何在 Laravel PHP 中显示 SQLSRV 图像【英文标题】:How to display SQLSRV IMAGE in Laravel PHP 【发布时间】:2016-04-02 11:59:44 【问题描述】:

我正在开发一个应用程序,该应用程序使用来自我只有读取权限的第 3 方服务器 (MS SQLSRV) 的数据。

该服务器上的图像存储为 IMAGE 数据类型。我使用 php (Laravel 5) 作为 AngularJS 前端的后端来显示图像。我不确定如何继续。

$students = DB::table('StudentImage')->where('STUDENTID', $id)->get();
$image = imagecreatefromstring($students[0]->IMAGE1); // unrecognized format error

我也试过这个:

$db = new PDO(...);
$stmt = $db->prepare("select IMAGE1 from [StudentImage] where [STUDENTID] = ?");
$stmt->execute([$id]);
$stmt->bindColumn('IMAGE1', $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);

return response($lob, 200, ['Content-Type'=>'image/jpg']);

我得到的只是一张 20x20 的空白图片。但是,我可以在 Navicat(数据库管理工具)中看到图像。

我该如何进行?

【问题讨论】:

【参考方案1】:

经过多次头撞后,我想通了。事实证明,SQL Server 中的“文本”字段有一个默认大小限制。您所要做的就是在运行SELECT 查询之前使用SET TEXTSIZE 命令“重置”大小:

<?php

    DB::select('SET TEXTSIZE 10485760');

    $students = DB::table('StudentImage')->where('STUDENTID', $id)->get();
    $image = imagecreatefromstring($students[0]->IMAGE1);

?>

这会将最大大小设置为 10 MB,这应该足以显示您想要的图像。这可能是 Navicat 在运行查询之前预设的内容。

【讨论】:

以上是关于如何在 Laravel PHP 中显示 SQLSRV 图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel php 刀片后,如何让数据显示在浏览器中? [关闭]

如何在php laravel中用户选择无线电输入的字段中隐藏或显示?

如何使用 php laravel 显示上传的图片

在 laravel 4 中显示错误

如何在 laravel 刀片中显示 iframe

在 laravel 中包含 php 文件的位置以及如何使用 javascript 调用 php 文件中的特定函数