1

我正在尝试使用以下代码从数据库中获取图像

$this->autoRender=false;
$blob = $this->GeneralNews->findById($id,array("image_data"));
 $image = imagecreatefromstring($blob["GeneralNews"]["image_data"]); 

 ob_start(); //You could also just output the $image via header() and bypass this buffer capture.
 imagejpeg($image, null, 80);
 $data = ob_get_contents();
 ob_end_clean();

echo '<img src="data:image/jpg;base64,' .   base64_encode($blob["GeneralNews"]["image_data"])  . '" />';

结果可以在下一个网址中看到 http://www.thedarkdimension.com/generalNews/displayImage/1678

但是当我尝试通过 iOS 获得这个

 NSData * imageData = [NSData dataWithContentsOfURL:imageURL];        
 UIImage * image = [UIImage imageWithData:imageData];

尽管(imageData)中有数据,但我得到的图像是空的

我无法弄清楚问题,但它很可能来自 PHP 方面.. 因为我尝试了这个 URL http://www.johnquarto.com/wp-content/uploads/2008/08/gag.jpg 并且没关系用它。

4

1 回答 1

0

快速浏览后,似乎从 URL http://www.thedarkdimension.com/generalNews/displayImage/1678返回的不是图像,而是声称属于“text/html”类型的文档。该文档实际上不是有效的 HTML,而仅包含一个 img 标记,其 source 属性是经过 base64 编码的图像。考虑到您的 PHP 代码,这是有道理的。

我怀疑 imageWithData 正在寻找的只是 jpeg 的所有二进制优点。

因此,您需要更改 PHP 以将 MIME 类型设置为 image/jpeg 并按原样回显 jpeg 数据 - 不需要 base64 编码。我已经很久没有看 PHP 了,我不敢给你示例代码,但希望这足以让你继续前进。

于 2013-03-16T11:34:41.663 回答