1

我目前通过在我的 php 文件中使用 JSON 从我的数据库中检索信息,我们称之为 getJson.php:

<?php
    include ("config.php");

    $query = "SELECT id,title,text,image,date FROM posts";
    $result = mysql_query($query) or die(mysql_error());

    $num = mysql_num_rows($result);

    $rows = array();
    while ($r = mysql_fetch_assoc($result)){
        $rows[] = $r;
    }


    echo json_encode($rows);


?>

然后在我的应用程序中,我使用以下方法检索 JSON 表示:

NSURL *url = [NSURL URLWithString:kGETUrlPosts];
NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
postsArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

我还将二进制图像数据存储为我想检索的 BLOB。但是我不能用 JSON 对这个二进制数据进行 JSON 编码,可以吗?

我的第二个选择是在图像字段中保留我的图像的 URL,然后调用

UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"www.myURL.com/MyPhotos/somephoto.png"]]];
4

1 回答 1

0

我们的解决方案分3步。

步骤1。创建一个接受 $_GET 参数 'imageId' 的专用 php 脚本

<?php
//Lets call this script as 'getImage.php'.
//This script should be publicly accessible
//Example format: http://www.yourdomain.com/getImage.php?imageId=2

include ("config.php");
$query = "SELECT image FROM posts WHERE id=" . mysql_real_escape_string($_GET['imageId']);
$result = mysql_query($query) or die(mysql_error());
$r = mysql_fetch_assoc($result);

//display the image
$im = imagecreatefromstring($r['image']); 
if ($im !== false) {
    // I assume you use only jpg
    //You may have to modify this block if you use some othe image format
    //visit: http://php.net/manual/en/function.imagejpeg.php
    header('Content-Type: image/jpeg'); 
    imagejpeg($im);
    imagedestroy($im);
} else {
    echo 'error.';
} 

?>

第2步。修改你的 getJson.php

<?php
    include ("config.php");

    //Notice the change in query.
    $query = "SELECT id,title,text,date FROM posts";
    $result = mysql_query($query) or die(mysql_error());

    $num = mysql_num_rows($result);

    $rows = array();
    while ($r = mysql_fetch_assoc($result)){
        //Please replace below url with your real server url.
        $r['image'] = 'http://www.yourdomain.com/getImage.php?imageId=' . $r['id'];
        $rows[] = $r;
    }

    echo json_encode($rows);    
?>

Step3 - IOS端 - 显示图像

图片 url 存在于您的响应数组中(我认为是 postsArray)。您只需将每行中的图像 url 视为普通图像!

笔记:

  • GD 库应该在 php.ini 中启用。
  • 我们可以做更多的优化。但这种方法会奏效。
于 2013-01-25T15:23:00.197 回答