2019-03-01

超簡單利用 php 透過 API 將圖片傳到 imgur (免費)

註冊 imgur API

首先到 https://imgur.com 註冊帳號 (註冊過程不寫了)
登入後點選左邊 imgur icon 下拉選單選到 developer api


點選左邊的 Authorization and OAuth
右邊點選 Registration , 或是直接點 這個連結 https://api.imgur.com/oauth2/addclient


這裡會有一個錯誤,不明原因,無關後續步驟,忽略即可
在這頁面輸入
1. Application Name (很像是自己看的而已?)
2. Authorization type 選擇 Anonymous usage without user authorization
3. Authorization callback URL 填入 https://imgur.com 就好
4. 輸入自己的 E-mail , 用來收 Client_ID 和 Client secret
5. 通過不是機器人驗證
6. 按 Submit



Application 註冊成功後就會取得 Client_ID 和 Client secret
同時也會寄 E-mail 給你
我們只需要用 Client_ID  而已


如果要管理 Application 的話到右上角按 UserName 下拉選單,選 settings


左邊選 Applications 就可以進行管理


接下來是程式的部分

只要把 $client_id 改成你自己註冊取得的 Client_ID 就可以了
圖檔可以自己算出 base64 編碼或給他一個可連結的網址都可以
上傳後 imgur 會回傳相關資訊,根據自己的需求變囉!

<?php
$client_id="e3156b49a0d176a";

// 方式一: 讀取檔案後算出 base64 編碼
$image = 'C:\WebSite\Google.png';
$imageHandle = fopen($image, "r");
$image = base64_encode(fread($imageHandle, filesize($image)));

// 方式二: 直接給 base64 編碼
$image = '(some base64 code)';

// 方式三: 給予網址 (http / https 都可以,不用是自己 Host 也行,只要能連到就好)
$image = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png';

$curl_post_array = [
'image' => $image,
'title' => $title,
];
$timeout = 30;

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.imgur.com/3/image.json');
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . $client_id));
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_array);
$curl_result = curl_exec($curl);
curl_close ($curl);
$Received_JsonParse = json_decode($curl_result,true);

if ($Received_JsonParse['success'] = true) {
$ImgURL = $Received_JsonParse['data']['link'];
echo "Uploaded<br/><br/><img src='".$ImgURL."'/>";
} else {
echo "Error<br/><br/>".$Received_JsonParse['data']['error'];
};
?>

沒有留言:

張貼留言