如何将 API 响应变成图像?

How to turn API response into an image?

我正在尝试使用 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��br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B���� #3R�br� �

如何将其转换为图像?

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

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

将其转储到文件中
// Instead of 'echo $response';
file_put_contents('image.jpg', $response);

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

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

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

这是我的代码

$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);

请告诉我我做错了什么。