Imgur là một nền tảng mạng xã hội giúp mọi người chia sẻ hình ảnh trực tuyến. Bài viết này sẽ hướng dẫn tải hình ảnh lên Imgur, sử dụng ngôn ngữ C#.

Đăng ký ứng dụng với Imgur để lấy mã API

Bước 01: Đăng nhập vào Imgur bằng tài khoản của bạn

Bước 02: Đi đến đường dẫn: https://api.imgur.com/oauth2/addclient

Bước 03: Điền một số thông tin bắt buộc như sau:
  • Application Name: Tên ứng dụng của bạn (đặt tên viết liền, không dấu).
  • Authorization type: Chọn mục OAuth 2 authorization without a callback URL
  • Email: Email của bạn.
  • Description: Mô tả về project của bạn.
  • Những thông tin còn lại, không bắt buộc nhưng bạn cũng có thể điền vào
  • Xác thực re-CAPCHAR để xác thực không phải là robot.

Bước 04: Nhấn Submit để gửi yêu cầu.

Bước 05: Nhận được mã Client ID như sau:


Tải ảnh lên Imgur

Bước 01: Chuyển hình ảnh thành chuỗi Base64, như sau:

Nếu là tập tin trong máy của bạn (local file):

string imgFile = @"D:\\Blog\\demo.png";
string imageBase64 = Convert.ToBase64String(File.ReadAllBytes(imgFile));code-box

Nếu là một tập tin có đường dẫn định danh trên mạng (URL):

string imgURL = "https://data.nonnguyen/demo.png";
string imageBase64 = Convert.ToBase64String(new WebClient().DownloadData(imgURL));code-box

Bước 02: Gửi request lên Imgur

const string CLIENT_ID = "Thay bằng client ID của bạn";
// Khởi tạo web client WebClient wc = WebClient();
var values = new NameValueCollection{ { "image", imageBase64} };
wc.Headers.Add("Authorization", "Client-ID " + CLIENT_ID);
// Kết quả trả về kiểu byte[] byte[] response = wc.UploadValues("https://api.imgur.com/3/upload.xml", values);
// Chuyển về kiểu string string result = System.Text.Encoding.UTF8.GetString(response);code-box

Bước 03: Nhận kết quả từ Imgur như sau:

<?xml version="1.0" encoding="utf-8"?>
<data type="array" success="1" status="200">
<id>esNWB3Q</id>
<title/>
<description/>
<datetime>1573915003</datetime>
<type>image/png</type>
<animated>false</animated>
<width>640</width>
<height>393</height>
<size>45863</size>
<views>0</views>
<bandwidth>0</bandwidth>
<vote/>
<favorite>false</favorite>
<nsfw/>
<section/>
<account_url/>
<account_id>0</account_id>
<is_ad>false</is_ad>
<in_most_viral>false</in_most_viral>
<has_sound>false</has_sound>
<tags/>
<ad_type>0</ad_type>
<ad_url/>
<edited>0</edited>
<in_gallery>false</in_gallery>
<deletehash>Hn9GysVLBJ5x8VD</deletehash>
<name/>
<link>https://i.imgur.com/esNWB3Q.png</link>
</data>code-box


Đường dẫn hình ảnh trả về nằm trong cặp thẻ <link></link> .
Để lấy được liên kết ảnh thì ta phân giải cấu trúc XML ra như sau:

System.Xml.XmlDocument xml = new System.Xml.XmlDocument();
xml.LoadXml(result);
string imgurURL = xml.GetElementsByTagName("link")[0].InnerText;code-box


Kết quả:

https://i.imgur.com/esNWB3Q.pngcode-box

Chúc các bạn code vui!


Post a Comment

Mới hơn Cũ hơn