🥣
【Golang】URLから取得した画像をBase64形式に変換
概要
Golangでhttpリクエストで取得した画像データを、Base64形式にする方法を調べてみました。
画像については通常はファイル形式で扱うかなと思いますが、Base64形式だと文字列で扱えるという点があります。画像をBase64で扱うことに関しては、画像ファイルをバイナリではなくテキストで扱うbase64フォーマットって便利なのだろうか?の記事を参考ください。
対応方針
- まずはhttpリクエストで画像を取得します。取得した画像をそのままブラウザでダウンロードするサンプルが参考になります。取得したレスポンスのBodyからreadを行うと、画像のbyteデータが取得できます。
- byteデータからBase64形式に変換します。#golang 画像ファイルをbase64 encode/decode するにはの記事にある通り、
base64.StdEncoding.EncodeToString
メソッドにbyteデータを入れれば、Base64の文字列が取得できそうです。
実装サンプル
上記の対応方針で紹介した2記事を、参考にした実装サンプルです。
sample.go
func SendGetHTTPRequestForBase64Image(sendURL string) (string, error) {
// 画像URLにHTTPリクエストを投げる
client := &http.Client{}
req, err := http.NewRequest("GET", sendURL, nil)
if err != nil {
return "", err
}
response, err := client.Do(req)
if err != nil {
return "", err
}
defer response.Body.Close()
// レスポンスからbyteデータを取得
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return "", err
}
// byteデータからBase64を取得
base64Data := base64.StdEncoding.EncodeToString(body)
return base64Data, nil
}
Discussion