【问题标题】:How to turn API response into an image?如何将 API 响应转换为图像?
【发布时间】:2016-10-19 07:29:50
【问题描述】:

我正在尝试使用 Postman 使用 API。在 Postman 中,图像显示正常。我正在使用 Postman 生成以下代码

$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.com/v2/tier1/XXXXX/photos/photo/MYPHOTOIDISHERE/download?api_key=MYAPIKEYISHERE",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,

    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
        "cache-control: no-cache",
        "postman-token: 74f19da6-d4ba-fe02-4ad3-2a313b472ca2"
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}

我对 Postman 的代码所做的唯一修改是 CURLOPT_SSL_VERIFYPEER,因为我遇到了错误。

图像在 Postman 中完美显示,但是当我尝试自己使用代码时,我得到一个看起来像 UTF 的长字符串。一个小样本(很长)如下;

����JFIF``��C #!!!$'$ & ! ��C ����"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B���� #3R�br� $4�

如何将其转换为图像?

【问题讨论】:

  • “把它变成图像”是什么意思? JPEG 是否损坏?从您的输出中很难看出 - 也许您应该显示一个 hexdump 而不是充满替换字符的行()。

标签: php api curl postman


【解决方案1】:

您看到的结果是图像的实际字节数。

您需要将其保存到文件或将其作为图像字节处理。要保存它,请将其转储到使用 file_put_contents($filename, $data) 的文件中

// Instead of 'echo $response';
file_put_contents('image.jpg', $response);

您将在脚本目录中看到一个新文件image.jpg

这假设图像是 jpeg,您可以在保存之前进行一些检查以确定类型。

【讨论】:

  • 完美运行!谢谢多诺万。克林特
【解决方案2】:

我可以将图像保存在文件夹中,但问题是它的显示错误 - 窗口照片查看器无法打开此图片,因为文件似乎已损坏、损坏或太大

这是我的代码

$oAuthToken = $token->access_token;
        $getUrl = 'https://www.googleapis.com/drive/v2/files/' . $googlefileid . '?alt=media';
        $authHeader = 'Authorization: Bearer ' . $oAuthToken ;

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $getUrl);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            $authHeader ,
        ]);

        $data = curl_exec($ch);
        curl_close($ch);
        Storage::put($googlfilename,$data);

请告诉我我做错了什么。

【讨论】:

  • 答案不是寻求帮助的地方。您应该打开一个新问题。
猜你喜欢
  • 1970-01-01
  • 2020-09-03
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 2017-12-06
相关资源
最近更新 更多