如何將圖片編碼成 base64?

圖片的 base64 編碼在多種上下文中都很有用。當需要通過旨在處理文本數據的媒體存儲或傳輸圖片時,它通常會被使用,比如嵌入到網頁或者通過 API 上傳圖片。這篇文章將介紹如何使用 Go 標準庫得到任何圖片的 base64 編碼的值。

在 Go 中將圖片轉換爲其 base64 表示很容易。所有你需要做的是將文件讀取爲字節 slice 並使用包 encoding/base64 對其進行編碼。

處理本地圖片

首先,讓我們處理本地文件系統中的圖片文件:

package main

import (
 "encoding/base64"
 "fmt"
 "io/ioutil"
 "log"
 "net/http"
)

func toBase64([]byte) string {
 return base64.StdEncoding.EncodeToString(b)
}

func main() {
 // 讀取文件到 byte slice
 bytes, err := ioutil.ReadFile("./flower.jpg")
 if err != nil {
  log.Fatal(err)
 }

 var base64Encoding string

 // 得到當前文件的格式
 mimeType := http.DetectContentType(bytes)

    // 根據MIME 類型添加適當的 URI 方案頭
 switch mimeType {
 case "image/jpeg":
  base64Encoding += "data:image/jpeg;base64,"
 case "image/png":
  base64Encoding += "data:image/png;base64,"
 }

    // 添加 base64 編碼的輸出
 base64Encoding += toBase64(bytes)

    // 打印圖片的完整 base64 表示
 fmt.Println(base64Encoding)
}

第一步是通過 ioutil.ReadFile() 將圖片文件讀取爲字節切片。接下來,用於獲取 http.DetectContentType() 的 MIME 類型文件,以便將相應的數據 URI 方案標頭附加到 base64 編碼的輸出。之後,調用該函數 toBase64() 它使用 base64.StdEncoding.EncodeToString() 方法檢索 圖片的 base64 編碼。此函數調用的結果將追加到 URI 方案標頭。

運行此代碼後,它會將圖片的 base64 編碼打印到提供的標準輸出。

您可以複製 base64 字符串並將其直接粘貼到瀏覽器的地址欄中。它應該顯示整個圖片,如下所示。

處理遠程圖片

將通過 URL 提供的圖片轉換爲其 base64 編碼, 與我們上面已經看到的沒有太大區別。您需要做的就是 對圖片進行 GET 請求,然後將響應正文讀取成字節切片。之後,該過程的其餘部分與使用本地圖片相同。

package main

import (
 "encoding/base64"
 "fmt"
 "io/ioutil"
 "log"
 "net/http"
)

func toBase64([]byte) string {
 return base64.StdEncoding.EncodeToString(b)
}

func main() {
 resp, err := http.Get("https://freshman.tech/images/dp-illustration.png")
 if err != nil {
  log.Fatal(err)
 }

 defer resp.Body.Close()

 bytes, err := ioutil.ReadAll(resp.Body)
 if err != nil {
  log.Fatal(err)
 }

 var base64Encoding string
 mimeType := http.DetectContentType(bytes)

 switch mimeType {
 case "image/jpeg":
  base64Encoding += "data:image/jpeg;base64,"
 case "image/png":
  base64Encoding += "data:image/png;base64,"
 }

 base64Encoding += toBase64(bytes)
 fmt.Println(base64Encoding)
}

本文技術點是通過http.DetectContentType獲取圖片類型,以及如何編碼圖片的 base4 形式。

祝你閱讀愉快。

翻譯自 How to retrieve the base64 encoding for any image in Go[1]

參考資料

[1]

How to retrieve the base64 encoding for any image in Go: https://freshman.tech/snippets/go/image-to-base64/

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/xTaMSLmKX0fHXYkYdcZ5yA