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
Lepaskan: 2024-12-01 06:13:13
asal
1030 orang telah melayarinya

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!")
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan