php - 如何使用 PHP 从媒体二进制文件创建和保存图像文件?
问题描述
我正在为客户开发一个房地产网站。我可以直接访问 Trestle 数据。我已经成功地提取了所有我想要的相关列表字段,但是我很难弄清楚图像是如何工作的。有关我正在使用的 Trestle 文档,请参阅此链接:https ://docs-trestle.corelogic.com/Subtopic/MultiplePhotos
这是我用来测试特定属性的输出的代码。我已经对自己进行了身份验证,$token 允许我访问数据。请注意,这是在 wordpress 网站上完成的。
$url = 'https://api-prod.corelogic.com/trestle/odata/Property(361082372)/Media/All';
$headers = array(
'cache-control' => 'no-cache',
'Authorization' => 'Bearer '.$token
);
$args = array(
'headers' => $headers
);
$response = wp_remote_get($url, $args);
var_dump($response['body']);
这是我得到的输出的截图。它有关于图像的数据,但我对如何将其转换为合法图像或下载图像文件本身有点迷茫。理想情况下,我只想下载图像。谁能引导我朝着正确的方向前进?谢谢你的帮助!
解决方案
我已经让它工作了 - 不确定这是否是最干净的方式。如果有更好的方法来解析这些数据,我会全力以赴!我很欣赏这些回应。无论如何,我发现“--TRM”是一个只在新图像之前发现的字符串,而从来没有在一个新图像中找到,所以我最初分解了那个字符串。然后,在二进制图像数据通过之前,我对最后一点文本进行了另一次爆炸,即“内容类型:图像/jpeg”。从这里我修剪了侧面,并且能够循环遍历并将每个图像保存到一个文件中。下面的代码:
$response = wp_remote_get($url, $args);
$images = array_slice(explode('--TRM', $response['body']), 1, -1);
$iteration = 0;
//Loop through each iteration of an "image"
foreach($images as $image) {
$iteration = $iteration + 1;
//explode on the last common text, take the last part, trim all whitespace and blank lines
$item = trim(explode('Content-Type: image/jpeg', $image)[1]);
file_put_contents(getcwd()."/listing-images/".$mls."/".$iteration.".jpeg", $item);
}
推荐阅读
- javascript - amcharts 堆积柱形图中的工具提示放置
- react-native - 错误:文本字符串必须在
组件,出现在 android 中,但在 web 上可以正常工作 - gitlab - Gitlab CI:在 Kaniko Job 中执行自己的脚本
- r - 根据年份找到加权平均值
- apache-spark - 在 spark 3.0.0 中无法触发 AQE 的倾斜连接优化
- java - BeanUtilsBeans copyProperties 不复制任何字段
- android - savedInstanceState 在第一次应用程序关闭后为空,但在第二次关闭后不为空
- html - How to apply to @font-face?
- qt - 在使用 LLVM 的 Windows 上的 QtCreator 编译中没有规则来制作目标
- php - 如果记录不存在并从数据库中获取数据,则需要插入 sql