首頁 > 後端開發 > Golang > 如何解決 Go 中從 URL 儲存映像時出現「cannot use m (type image.Image) as Type []byte」錯誤?

如何解決 Go 中從 URL 儲存映像時出現「cannot use m (type image.Image) as Type []byte」錯誤?

Susan Sarandon
發布: 2024-11-30 08:00:17
原創
1001 人瀏覽過

How to Solve the

如何將圖片從URL 儲存到檔案:克服無法使用m (type image.Image) 作為Type []byte 錯誤

從URL 獲取圖像並將其保存到檔案是許多程式設計應用程式中的常見任務。在 Go 中,這可以使用 http 和 image 套件來實現。但是,在嘗試將 image.Image 類型傳遞給 ioutil.WriteFile 函數時,可能會遇到錯誤。

錯誤訊息,「cannot use m (type image.Image) as type []byte in function argument,」 表示 image.Image 類型不能直接寫入檔案。這是因為 ioutil.WriteFile 函數需要一個位元組切片 ([]byte) 作為其第二個參數。

在這種情況下將影像儲存到檔案的正確方法是完全避免解碼影像。相反,您可以直接將包含圖像資料的回應正文複製到檔案中。

package main

import (
    "fmt"
    "io"
    "log"
    "net/http"
    "os"
)

func main() {
    url := "http://i.imgur.com/m1UIjW1.jpg"
    // don't worry about errors
    response, e := http.Get(url)
    if e != nil {
        log.Fatal(e)
    }
    defer response.Body.Close()

    //open a file for writing
    file, err := os.Create("/tmp/asdf.jpg")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // Use io.Copy to just dump the response body to the file. This supports huge files
    _, err = io.Copy(file, response.Body)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Success!")
}
登入後複製

在此修改後的程式碼中:

  1. 我們不解碼影像使用 image.Decode。
  2. 我們使用 os.Create 開啟一個檔案進行寫入。
  3. 我們使用 io.Copy直接將包含原始影像資料的回應正文複製到檔案中。這允許我們將圖像保存到文件中,而不需要解碼。

以上是如何解決 Go 中從 URL 儲存映像時出現「cannot use m (type image.Image) as Type []byte」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板