如何将API响应转换为图像?

时间:2016-06-17 12:45:21

标签: php api curl postman

我尝试使用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�

如何将其转换为图像?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

答案 1 :(得分:-1)

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

这是我的代码

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

请告诉我我做错了什么。

相关问题