【发布时间】:2009-11-19 17:54:22
【问题描述】:
我有一些非常简单的 php 代码,可以从数据库中返回二进制图像数据。
ob_start();
$stmt = $db->prepare($sql);
$stmt->execute(array($ImageID));
$stmt->bindColumn(1, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
ob_clean();
header("Content-Type: " . $content_type);
fpassthru($lob);
让我们将此脚本称为 get_image.php。我从另一个脚本调用这个脚本来获取图像数据然后处理它。像这样。
$src = file_get_contents('example.com/get_image.php?ImageID=foo');
$src = imagecreatefromstring($src);
imagecopyresized($newfile, $src, 0, 0, 0, 0, $newwidth, $newheight, $origwidth, $origheight);
我从图像处理函数中收到错误消息,提示“数据不是可识别的格式”。在查看响应后,我的 $src 变量看起来包含标头以及二进制数据。我一直在做研究,但我不知道如何摆脱标头输出而只使用原始二进制字符串。任何帮助表示赞赏。
要清楚,如果我打印出 $src 字符串,而不是原始二进制数据,我会得到以下内容。
HTTP/1.1 200 OK
Date: Thu, 19 Nov 2009 17:33:01 GMT
Server: Apache/2.2.8 (Unix) ...
X-Powered-By: PHP/5.2.11
Connection: close
Content-Type: image/jpeg
/* Then all the binary data */
【问题讨论】:
-
手动打开example.com/get_image.php?ImageID=foo时浏览器会显示图片吗?
-
是的。当我直接点击脚本时,图像显示良好。