[C#] 可程式化的免費圖床方案 - Cloudinary

之前圖床都是用 imgur ,但是最近因為客戶違規,導致我的 API 或是 IP 被擋住

這時候客戶基本上想要換一間圖床,所以簡單做一下功課,基本上不知道問誰就問了一下 GPT 

之後就整理了一下幾家,今天就先分享 Cloudinary 

1.  Cloudiary - 是一個基於雲端的媒體管理和處理平台,專注於圖像和視頻的存儲、管理、處理和優化。它提供了豐富的 API 和開發工具,

幫助開發者在網頁或應用程序中更高效地處理多媒體內容,基本上我們不會用到優化跟處理,今天就是專注再上傳跟取得網址的部份

其實這功能很強大,他甚至有自己的 marketplace 



2. 先註冊,註冊完之後就可以拿到 API KEY 

之後你可以拿到一個連 environment variable 基本上格式就是 

cloudinary://<your_api_key>:<your_api_secret>@dhxxxxx

3. 再來就是程式碼的部份,基本上官方有提供套件,所以並不困難

https://www.nuget.org/packages/CloudinaryDotNet/

C# code:

var cloudinary = new CloudinaryDotNet.Cloudinary("cloudinary://:@dhxxxxx");
   var uploadParams = new ImageUploadParams()
   {
       File = new FileDescription(filePath),
       UseFilename = true,
       UniqueFilename = false,
       Overwrite = true
   };
   var uploadResult = cloudinary.Upload(uploadParams);

   if (uploadResult.JsonObj != null)
   {
       return uploadResult.JsonObj["secure_url"].ToString();
   }

   return null;

/* Response JSON 
{{
  "asset_id": "2bcc379697893627882e0f0f569a6576",
  "public_id": "pihu",
  "version": 1724224427,
  "version_id": "31e415bbbd9c0d1b99ed59a8d026d893",
  "signature": "23984bb139a73020fe443d35d1c377216965bdba",
  "width": 586,
  "height": 478,
  "format": "jpg",
  "resource_type": "image",
  "created_at": "2024-08-21T07:13:47Z",
  "tags": [],
  "bytes": 189345,
  "type": "upload",
  "etag": "6efd24d90a9b6fd9cf6d7729f70179de",
  "placeholder": false,
  "url": "http://res.cloudinary.com/dhb7dyad5/image/upload/v1724224427/pihu.jpg",
  "secure_url": "https://res.cloudinary.com/dhb7dyad5/image/upload/v1724224427/pihu.jpg",
  "asset_folder": "",
  "display_name": "pihu",
  "original_filename": "pihu",
  "api_key": "72999999999999"
}}
*/

   

基本上就可以拿到,上傳後的網址

 


4. 身為 白嫖 試用一族必須要注意免費的用量,他官方是寫你是用的是所謂的 credit 但是這 credit 要怎麼計算呢?

他預設會給你 25 credits ,然後他有 一個舉例:

他官方是這樣寫的:

一個  credit 可用於:

1000 次轉換

大多數圖像轉換(包括複雜的鏈式轉換)都算作單個轉換。

大多數視頻轉換都是按秒計數的。

(每秒轉換的次數取決於提供的視頻解析度)。

某些需要複雜處理的高級轉換或格式具有特殊的轉換計數規則。

1 GB 託管存儲空間

存儲包括您的主要資產存儲、每個派生資產的緩存副本(來自已交付的轉換)以及備份到 Cloudinary 備份存儲的任何修訂。

1 GB 提供的頻寬

對於圖像,頻寬基於傳輸的圖像檔大小。

對於視頻,1 GB 通常等於 ~500 秒的傳輸標清視頻或 ~250 秒的高清視頻)

或每種的組合部分。

例如,假設在一個 30 天內,您需要:

2 GB 影像和視訊儲存空間(2 學分)

4 GB 傳輸頻寬(4 學分)

4000 次轉換 (4 credits)

基本上,我覺得一般狀況下,一個中小網站,透過 CDN  做緩存,應該是可以,當然如果量大就是乖乖只能買 credit 了,但是至少算是給的福利還可以

-

本文原文首發於我的個人部落格:可程式化的免費圖床方案 - Cloudinary

reference:

https://community.cloudinary.com/discussion/437/question-about-credit

https://cloudinary.com/documentation/dotnet_quickstart

https://cloudinary.com/documentation/developer_onboarding_faq_free_plan

---

Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer.