1

我正在调用基于 RETS 的服务来收集有关房产列表的数据……当然,这方面的一个主要方面是获取照片。但是,照片的数据实际上是原始图像数据:

ÿØÿàJFIF``ÿá"ExifII*îhÿÛC       $.' ",#(7),01444'9=82<.342ÿÛC     2!!22222222222222222222222222222222222222222222222222ÿÀU"ÿÄ    ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚  %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ    ÿĵw!1AQaq"2B‘¡±Á  #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ?÷ú(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ 

等等等等等等……

如何转换/使用这些原始数据并将其转换为 Web 服务器上的物理文件?

4

3 回答 3

2

尝试简单地将这些原始数据写入文件。如果您确定文件格式始终为 JPG,则设置.jpg为扩展名。

如果没有,您可能想看看这里- 这应该可以帮助您获得正确的文件格式,然后设置适当的文件扩展名。

编辑我不知道 RETS 协议,但它可能会返回图像的内容类型,这应该会进一步简化整个过程。:)

于 2012-12-19T21:05:36.337 回答
0

您必须从 RETS 服务器解析 mime multipart 对象。您可以手动获取每一行并将其分块在 mime 分隔符字符串中,您还必须弄清楚它在标题中的位置。

如果您想节省时间,请查看phrets 类源代码(或直接使用它)。https://github.com/troydavisson/PHRETS/blob/master/phrets.php#L141

这里有一些例子, https://github.com/troydavisson/PHRETS/wiki/GetObject

于 2013-06-04T21:26:32.357 回答
0

此外,如果您在对给定列表的所有照片使用 GetObject 请求时在流中获得多个 jpeg,您可以拆分 ÿØÿà 字节 (\xff\xd8\xff\xe0) 并保存由拆分为 jpeg 文件,但您必须在每个 jpeg 的开头保留 ÿØÿà,因此您需要在拆分后在每个块的开头重新插入它们。我也从“类似 RETS”的服务中遇到了这个问题,并且不得不手动将下标(_1、_2 等)添加到拆分产生的 jpeg 文件名中。它最终是这样的:

if response.find('\xff\xd8\xff\xe0') > -1:
    blist = response.split('\xff\xd8\xff\xe0')
    blist.remove("")  /* get rid of any empty list elements resulting from split */
    index = 1
    for img in blist:
        file_nm = os.path.join(photo_dir, "{0}_{1}.jpg".format(photo_id, index))
        with open(photo_file_nm, "wb") as photo_file:
            photo_file.write('\xff\xd8\xff\xe0' + img)
        index += 1

...其中 photo_dir 和 photo_id 在此块之外定义。这个例子是 python,但可以很容易地转换为 php。

于 2013-01-30T21:28:25.177 回答