Pertanyaan Bagaimana cara mengubah objek yang menerima gambar dalam byte menjadi gambar yang sebenarnya?


Saya mengembangkan aplikasi perangkat pintar di C #. Dalam hal itu saya memanggil layanan web. Metode layanan web mengembalikan peta google. Jenis kembalinya metode adalah objek. Objek berisi gambar dalam format byte. Objek conatins gambar dalam format base64binary. Saya perlu menampilkan gambar yang sebenarnya di aplikasi saya. Apa jenis casting yang harus saya lakukan untuk menampilkan gambar. Dapatkah Anda memberi saya kode atau tautan apa pun yang dengannya saya dapat menyelesaikan masalah di atas?


4
2018-02-27 06:18


asal


Jawaban:


Anda harus bisa meletakkan byte [] ke dalam MemoryStream untuk membuat gambar seperti di bawah ini

byte[] yourImage;
MemoryStream ms = new MemoryStream(image);
Image.FromStream(ms);

2
2018-02-27 06:32



Jika Anda memiliki string di mana byte dari suatu gambar memang berada pengkodean base64 maka Anda ingin memanggil statis Metode FromBase64String pada kelas Konversi untuk mendapatkan larik byte:

byte[] bytes = Convert.FromBase64String("base 64 string");

Dari sana, Anda mau buat instance baru dari MemoryStream kelas dengan byte:

MemoryStream ms = new MemoryStream(bytes);

Akhirnya, panggilan terakhir yang Anda lakukan adalah statis Metode FromStream pada kelas Gambar untuk mendapatkan Gambar Anda dapat bekerja dengan:

Image image = Image.FromStream(ms);

Catatan di bagian Catatan untuk dokumentasi untuk metode FromStream pada kelas Gambar, Anda harus menyimpan Aliran Misalnya (dari mana MemoryStream berasal) terbuka selama Anda menggunakan Gambar.

Juga perhatikan bahwa sementara pelaksanaan dari MemoryStream tidak menggunakan sumber daya yang tidak dikelola dan tidak selalu perlu panggilan ke Membuang, itu merupakan pengkodean terhadap detail implementasi, yang bertentangan dengan kontrak perincian, yang ditentukan oleh kelas Stream, yang menunjukkan Anda harus memanggil Dispose ketika selesai dengannya.

Alasan Anda ingin melakukan ini adalah jika Stream untuk gambar adalah subkelas yang berbeda. Misalnya, jika a FileStream Misalnya digunakan, Anda harus panggil Dispose saat Anda selesai dengannya (bersama dengan metode Dispose pada kelas Gambar, juga).


5
2018-02-27 06:31