2016-06-17 32 views
1

我正在嘗試使用郵遞員使用API​​。在Postman中,圖像顯示正常。我使用的郵差生成以下代碼如何將API響應轉換爲圖像?

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

我已經從郵差代碼所做的唯一修改是CURLOPT_SSL_VERIFYPEER,因爲我得到了一個錯誤。

圖像在Postman中完美顯示,但是當我嘗試自己使用代碼時,我得到一個看起來像UTF的長字符串。這個小樣本(非常長)如下:

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

如何轉換爲圖像呢?

+0

「將它變成圖像」是什麼意思? JPEG是否損壞?很難從輸出中得知 - 也許你應該顯示一個hexdump,而不是全部替換字符(' ')。 –

回答

1

您看到的結果是圖像的實際字節數。

您需要將其保存到文件或將其作爲圖像字節進行處理。要保存它,它轉儲到使用file_put_contents($filename, $data)

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

你會看到你的腳本目錄中的一個新文件image.jpg文件。

這個假設圖像是一個JPEG圖像,你可以做一些檢查,以確定在保存它之前的類型。

+0

完美的作品!謝謝多諾萬。 Clint – Clint

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

請告訴我我做錯了什麼。

+0

答案不是尋求幫助的地方。您應該改爲打開一個新問題。 – Shirkam