Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan Ralat 'tidak boleh menggunakan m (taip imej.Imej) sebagai Jenis []bait' Semasa Menyimpan Imej daripada URL dalam Go?

Bagaimana untuk Menyelesaikan Ralat 'tidak boleh menggunakan m (taip imej.Imej) sebagai Jenis []bait' Semasa Menyimpan Imej daripada URL dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-11-30 08:00:171076semak imbas

How to Solve the

Cara Menyimpan Imej daripada URL ke Fail: Mengatasi Tidak Boleh Menggunakan m (taip imej.Imej) sebagai Ralat []bait

Mendapatkan imej daripada URL dan menyimpannya ke fail adalah tugas biasa dalam banyak aplikasi pengaturcaraan. Dalam Go, ini boleh dicapai menggunakan pakej http dan imej. Walau bagaimanapun, anda mungkin menghadapi ralat semasa cuba menghantar imej. Jenis imej ke fungsi ioutil.WriteFile.

Mesej ralat, "tidak boleh menggunakan m (type image.Image) sebagai jenis []bait dalam fungsi argumen," menunjukkan bahawa imej.Jenis imej tidak boleh ditulis terus ke fail. Ini kerana fungsi ioutil.WriteFile menjangkakan kepingan bait ([]bait) sebagai hujah kedua.

Cara yang betul untuk menyimpan imej ke fail dalam situasi ini adalah untuk mengelakkan penyahkodan imej sama sekali. Sebaliknya, anda boleh menyalin terus badan respons, yang mengandungi data imej, ke fail.

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!")
}

Dalam kod yang diubah suai ini:

  1. Kami tidak menyahkod imej menggunakan imej.Nyahkod.
  2. Kami membuka fail untuk menulis menggunakan os.Buat.
  3. Kami menggunakan io.Salin ke terus salin badan tindak balas, yang mengandungi data imej mentah, ke fail. Ini membolehkan kami menyimpan imej ke fail tanpa memerlukan penyahkodan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'tidak boleh menggunakan m (taip imej.Imej) sebagai Jenis []bait' Semasa Menyimpan Imej daripada URL dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn