我正在尝试使用以下代码从数据库中获取图像
$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 它没关系。
答案 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这么长时间我不敢给你示例代码,但希望这足以让你走了。