我正在尝试从数据类型为image
的列中获取Microsoft SQL Server数据库中的图像数据,显示它并存储到文件。但有些图像(10%)尚未完成。在浏览器中,它们仅从顶部渲染为一半或1/3。每次都有问题'图像是相同的,破碎方式也是一样的。
有问题的图片我正在尝试在2台不同的服务器上展示和存储
如果我在两台服务器上使用这个:
var_dump(base64_encode($row['data'], "UTF-8"));
看起来图像的一部分缺失 - 字符串更短。
这是一些数据解释/转换问题吗?
如果我使用提取的数据iconv_get_encoding
或mb_detect_encoding
,则两个服务器都返回false
...
我的代码:
$conn = mssql_connect ('xxx.xxx.xxx.xxx' , 'xxxxxxxxx', 'xxxxxxxxxxxxxxxxx' );
if (!$conn) {
echo "<p style='color: red'>error in connection db! id: ".$id."</p>";
} else {
mssql_select_db('CK', $conn);
echo "<p style='color: green'>connection ok for id: ".$id."</p>";
}
$result = mssql_query(
"SELECT k.data FROM KatG k
WHERE k.auto='".$id."'
ORDER BY k.attr DESC");
$row = mssql_fetch_assoc($result);
$imageData = base64_encode($row['data']);
$src = 'data: image/jpeg;base64,'.$imageData;
$img = '<img style="height: 60px; float: right;" src="'. $src. '">';
echo $img."<p>OK i get data!</p> <hr>";
如果我像这样保存此图像:(没有base64_encode
功能)
$im = imagecreatefromstring($row['data']);
imagejpeg($im, $path);
图片与浏览器中显示的图片相同。
答案 0 :(得分:0)
必须在mssql_fetch_assoc
之前增加TEXTSIZE并且图像正常...
mssql_query('SET TEXTSIZE 10000000');
因此在php.ini
中存在差异,您可以将此值设置为
mssql.textlimit = 10000000
mssql.textsize = 10000000