如何在PHRETS中将二进制图像数据显示为图像

时间:2014-10-30 20:13:38

标签: rets

我正在使用http://otw.rets.interealty.com/Login.asmx/Login 我正在将图像作为二进制数据。如何将REDIS中的二进制数据显示为图像。 这是我的代码

$sysid = $data['sysid'];
$photos = $rets->GetObject("Property", "Photo", $sysid, "*", 1);
echo $photos[0]['Data'];

3 个答案:

答案 0 :(得分:0)

我会查看您获得的结果/数据的内容类型。我会用各自的类型(.jpg,.bmp)保存每个文件,然后在PHP代码中引用保存的文件。

https://github.com/troydavisson/PHRETS/wiki/GetObject

答案 1 :(得分:0)

根据GetObject的PHRETS文档,GetObject中的最后一个参数$ location可以是“0”或“1”。 “1”返回图像的URL字符串,“0”返回二进制图像数据。

#1编码图像数据并输出到浏览器而不保存到文件。来自this SO question

$photos = $rets->GetObject("Property", "Photo", $sysid, "*", 0);
foreach ($photos as $photo) 
{

    if ($photo['Success'] == true) 
    {
        $contentType = $photo['Content-Type'];
        $base64 = base64_encode($photo['Data']); 
        echo "<img src='data:{$contentType};base64," . $base64 . "' />";
    }
    else 
    {
        echo "({$photo['Content-ID']}-{$photo['Object-ID']}): {$photo['ReplyCode']} = {$photo['ReplyText']}<br />";
    }

}

#2将图像保存到文件然后再显示。 From PHRETS

$photos = $rets->GetObject("Property", "Photo", $sysid, "*", 0);
foreach ($photos as $photo) 
{

    if ($photo['Success'] == true) 
    {
        file_put_contents("image-{$listing}-{$number}.jpg", $photo['Data']);
        echo "<img src='image-{$listing}-{$number}.jpg' />";
    }
    else 
    {
        echo "({$photo['Content-ID']}-{$photo['Object-ID']}): {$photo['ReplyCode']} = {$photo['ReplyText']}<br />";
    }

}

答案 2 :(得分:0)

这些答案已经有了一些很好的信息。

要解决您之后的问题,Interealty服务器不支持分页。要使用密钥索引,您必须:

1)使用RETS / 1.7.2或更高版本 2)指定Limit =&gt;在您的SearchRequest中没有 3)在SearchRequest

中的Select参数中仅提供关键索引标识字段

如果你正确地做了这三件事,服务器应该暂停其每个响应记录的限制。