Apakah ada cara untuk mengunduh gambar langsung dari url di c # jika url tidak memiliki format gambar di akhir tautan? Contoh url:
https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/v/t34.0-12/10555140_10201501435212873_1318258071_n.jpg?oh=97ebc03895b7acee9aebbde7d6b002bf&oe=53C9ABB0&__gda__=1405685729_110e04e71d969d392b63b27ec4f4b24a
Saya tahu cara mengunduh gambar ketika url diakhiri dengan format gambar. Misalnya:
http://img1.wikia.nocookie.net/__cb20101219155130/uncyclopedia/images/7/70/Facebooklogin.png
Bergantung apakah Anda mengetahui format gambar atau tidak, berikut ini cara melakukannya:
Unduh Gambar ke file, mengetahui format gambar
Unduh Gambar ke file tanpa mengetahui format gambar
Anda dapat menggunakan
Image.FromStream
untuk memuat semua jenis bitmap biasa (jpg, png, bmp, gif, ...), ini akan mendeteksi secara otomatis jenis file dan Anda bahkan tidak perlu memeriksa ekstensi url (yang tidak terlalu baik praktek). Misalnya:Catatan: ArgumentException dapat dijalankan
Image.FromStream
jika konten yang didownload bukan tipe gambar yang dikenal.Periksa referensi ini di MSDN untuk menemukan semua format yang tersedia. Berikut adalah referensi untuk
WebClient
danBitmap
.sumber
webClient.ResponseHeaders["Content-Type"]
Untuk siapa saja yang ingin mendownload gambar TANPA menyimpannya ke file:
sumber
Ini tidak perlu digunakan
System.Drawing
untuk menemukan format gambar dalam URI.System.Drawing
tidak tersedia.NET Core
kecuali Anda mengunduh paket System.Drawing.Common NuGet dan oleh karena itu saya tidak melihat jawaban lintas platform yang baik untuk pertanyaan ini.Selain itu, contoh saya tidak digunakan
System.Net.WebClient
karena Microsoft secara eksplisit melarang penggunaanSystem.Net.WebClient
.Unduh gambar dan tulis ke file tanpa mengetahui ekstensi (lintas platform) *
* Tanpa tua
System.Net.WebClient
danSystem.Drawing
.Metode ini akan mengunduh gambar secara asinkron (atau file apa pun selama URI memiliki ekstensi file) menggunakan
System.Net.Http.HttpClient
dan kemudian menulisnya ke file, menggunakan ekstensi file yang sama seperti gambar di URI.Mendapatkan ekstensi file
Bagian pertama untuk mendapatkan ekstensi file adalah menghapus semua bagian yang tidak diperlukan dari URI.
Kami menggunakan Uri.GetLeftPart () dengan UriP Partial.Path untuk mendapatkan semuanya mulai dari yang
Scheme
atas hinggaPath
.Dengan kata lain,
https://www.example.com/image.png?query&with.dots
menjadihttps://www.example.com/image.png
.Setelah itu, kami menggunakan Path.GetExtension () untuk hanya mendapatkan ekstensi (dalam contoh saya sebelumnya,
.png
).Mendownload gambar
Dari sini harus lurus ke depan. Unduh gambar dengan HttpClient.GetByteArrayAsync , buat jalur, pastikan direktori ada dan kemudian tulis byte ke jalur dengan File.WriteAllBytesAsync () (atau
File.WriteAllBytes
jika Anda menggunakan .NET Framework)Perhatikan bahwa Anda memerlukan yang berikut menggunakan arahan.
Contoh penggunaan
Catatan
HttpClient
untuk setiap pemanggilan metode. Itu seharusnya digunakan kembali di seluruh aplikasi. Saya menulis contoh singkatImageDownloader
(50 baris) dengan lebih banyak dokumentasi yang menggunakan kembali denganHttpClient
benar dan membuangnya dengan benar yang dapat Anda temukan di sini .sumber
.net Framework memungkinkan Kontrol PictureBox untuk Memuat Gambar dari url
dan Simpan gambar di Acara Lengkap Laod
sumber
Coba ini berhasil untuk saya
Tuliskan ini di Controller Anda
Ini pandangan saya
sumber
Sebagian besar posting yang saya temukan akan habis setelah iterasi kedua. Terutama jika Anda mengulang-ulang banyak gambar seperti yang saya lakukan. Jadi untuk meningkatkan saran di atas, inilah seluruh metode:
sumber