Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Muat Turun dan Simpan Imej daripada URL dengan Cekap dalam Go?

Bagaimana untuk Muat Turun dan Simpan Imej daripada URL dengan Cekap dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-12-01 06:13:13963semak imbas

How to Efficiently Download and Save Images from URLs in Go?

Memuat turun dan Menyimpan Imej daripada URL dalam Go

Masalah:

Apabila cuba mendapatkan semula imej daripada URL dan simpan ke fail, ralat berlaku: "tidak boleh menggunakan m (jenis imej.Imej) sebagai jenis []bait dalam fungsi hujah."

Analisis:

Kod asal menukar imej kepada imej Go.Objek imej (m) yang merupakan perwakilan dalam memori bagi imej. Walau bagaimanapun, fungsi ioutil.WriteFile() menjangkakan kepingan bait ([]bait).

Penyelesaian:

Daripada menukar imej kepada perwakilan dalam memori , kita boleh terus menyalin badan tindak balas ke fail output menggunakan fungsi io.Copy. Berikut ialah versi kod yang diubah suai:

package main

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

func main() {
    url := "http://i.imgur.com/m1UIjW1.jpg"
    // don't worry about errors
    response, err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }
    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!")
}

Penjelasan:

  • http.Get() mendapatkan semula imej daripada URL dan menyimpan respons dalam respons.
  • os.Create() mencipta fail kosong di /tmp/asdf.jpg.
  • io.Salin menyalin keseluruhan kandungan respons.Isi ke dalam fail.
  • fmt.Println() mencetak mesej kejayaan.

Nota Tambahan:

  • Kod ini menganggap respons HTTP mengandungi fail imej yang sah.
  • Untuk mengendalikan pengecualian dan keupayaan manipulasi imej yang lebih maju, pertimbangkan untuk menggunakan pustaka imej Go khusus seperti github.com/disintegration/imaging.

Atas ialah kandungan terperinci Bagaimana untuk Muat Turun dan Simpan Imej daripada URL dengan Cekap 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