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"])  . '" />';

結果は次の URL 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 ではなく、base64 でエンコードされた画像である source 属性を持つ単一の img タグを含むだけです。PHPコードを考えれば、それは理にかなっています。

imageWithData が探しているのは、すべてのバイナリの良さにおける jpeg だけだと思います。

したがって、PHP を変更して MIME タイプを image/jpeg に設定し、jpeg データをそのままエコーするようにする必要があります。base64 エンコーディングは必要ありません。私は長い間 PHP を見ていなかったので、あえてサンプル コードを示すことはできませんが、うまくいけば、それで十分です。

于 2013-03-16T11:34:41.663 に答える