Bagaimana Anda mengonversi gambar dari jalur di komputer pengguna menjadi string base64 di C #?
Misalnya, saya memiliki jalur ke gambar (dalam format C:/image/1.gif
) dan ingin memiliki URI data seperti data:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD..
mewakili 1.gif
gambar yang dikembalikan.
Jawaban:
Coba ini
sumber
image.RawFormat
.RawFormat
bukanlah penentu format gambar; itu adalah propertiimage
objek, yang mengembalikan format gambar saat dibaca dari file , yang berarti dalam kasus ini, itu akan mengembalikan format gif. Jadi itu tidak mengubah apa pun, kecuali bahwa alih-alih byte file asli yang sebenarnya, Anda memiliki byte gambar sebagai disimpan ulang ke gif oleh kerangka kerja .Net.Dapatkan
byte[]
representasi byte array ( ) dari gambar, kemudian gunakanConvert.ToBase64String()
, st. seperti ini:Untuk mengonversi gambar base4 kembali ke System.Drawing.Image:
sumber
System.Drawing.Image
Anda dapat menggunakan st. seperti ini:var img = Image.FromStream(new MemoryStream(Convert.FromBase64String(base64String)));
Karena kebanyakan dari kita menyukai oneliners:
Jika Anda membutuhkannya sebagai array byte Base64:
sumber
Meskipun jawaban yang lebih rumit adalah baik, saya menemukan bahwa ini jauh lebih baik
Ini sederhana, Anda tidak perlu menyimpan ulang dan menangani format yang berbeda
sumber
Ini adalah kelas yang saya tulis untuk tujuan ini:
sumber
Anda dapat dengan mudah melewati jalur gambar untuk mengambil string base64
Semoga ini bisa membantu.
sumber
_image.RawFormat
) tetapi menampilkan data sebagai jenis pantomimimage/jpg
Anda dapat menggunakan
Server.Map
jalur untuk memberikan jalur relatif dan kemudian Anda dapat membuat gambar menggunakanbase64
konversi atau Anda dapat menambahkanbase64
string keimage src
.sumber
Dengan cara itu lebih sederhana, di mana Anda melewatkan gambar dan kemudian meneruskan formatnya.
sumber
Potongan kode berikut berfungsi untuk saya:
sumber
Berdasarkan jawaban pilihan teratas, diperbarui untuk C # 8. Berikut ini dapat digunakan di luar kotak. Ditambahkan secara eksplisit
System.Drawing
sebelumnyaImage
karena seseorang mungkin menggunakan kelas itu dari namespace lain secara default.sumber
Anda dapat mengubahnya seperti ini
Keluaran
sumber
Sesuatu seperti itu
sumber
C#
tag pada pertanyaan?