CakePHP:从mysql BLOB到iOS获取图像

时间:2013-03-16 10:58:28

标签: php ios image cakephp

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

$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 它没关系。

1 个答案:

答案 0 :(得分:0)

看了很快,看来从网址http://www.thedarkdimension.com/generalNews/displayImage/1678返回的内容不是图片,而是声称属于“text / html”类型的文档。该文档实际上不是有效的HTML,而只包含一个img标记,其source属性是base64编码的图像。鉴于您的PHP代码,这是有道理的。

我怀疑imageWithData正在寻找什么,但它只是所有二进制中的jpeg。

因此,您需要更改PHP以将MIME类型设置为image / jpeg并仅按原样回显jpeg数据 - 而不是需要base64编码。我没有看过PHP这么长时间我不敢给你示例代码,但希望这足以让你走了。