Adakah yang bisa menyarankan bagaimana saya dapat mengubah gambar menjadi array byte dan sebaliknya?
Saya sedang mengembangkan aplikasi WPF dan menggunakan pembaca aliran.
Kode contoh untuk mengubah gambar menjadi array byte
public byte[] ImageToByteArray(System.Drawing.Image imageIn)
{
using (var ms = new MemoryStream())
{
imageIn.Save(ms,imageIn.RawFormat);
return ms.ToArray();
}
}
C # Image to Byte Array dan Byte Array to Image Converter Class
System.Drawing.Imaging.ImageFormat.Gif
, Anda dapat menggunakanimageIn.RawFormat
ImageConverter
solusi ditemukan di bawah tampaknya untuk menghindari kesalahan ini.(new Bitmap(imageIn)).Save(ms, imageIn.RawFormat);
.Untuk Mengonversi objek Gambar menjadi
byte[]
Anda dapat melakukan hal berikut:sumber
.ConvertTo(new Bitmap(x), typeof(byte[]));
.Cara lain untuk mendapatkan array Byte dari jalur gambar adalah
sumber
Inilah yang saya gunakan saat ini. Beberapa teknik lain yang saya coba tidak optimal karena mengubah kedalaman bit piksel (24-bit vs. 32-bit) atau mengabaikan resolusi gambar (dpi).
Array gambar ke byte:
Array byte ke Gambar:
Edit: Untuk mendapatkan Gambar dari file jpg atau png Anda harus membaca file tersebut ke dalam array byte menggunakan File.ReadAllBytes ():
Ini menghindari masalah yang terkait dengan Bitmap yang menginginkan aliran sumbernya tetap terbuka, dan beberapa solusi yang disarankan untuk masalah tersebut yang mengakibatkan file sumber tetap terkunci.
sumber
ImageConverter _imageConverter = new ImageConverter(); lock(SourceImage) { return (byte[])_imageConverter.ConvertTo(SourceImage, typeof(byte[])); }
Di mana itu akan sesekali menghasilkan array dengan 2 ukuran berbeda. Ini biasanya akan terjadi setelah sekitar 100 iterasi, Tetapi ketika saya mendapatkan bitmap menggunakannew Bitmap(SourceFileName);
dan kemudian menjalankannya melalui kode itu, itu berfungsi dengan baik.coba ini:
sumber
MemoryStream
lebih cepat, setidaknya dalam implementasi saat ini. Faktanya, jika Anda menutupnya, Anda tidak akan dapat menggunakanImage
setelahnya, Anda akan mendapatkan kesalahan GDI.Anda dapat menggunakan
File.ReadAllBytes()
metode untuk membaca file apa pun ke dalam array byte. Untuk menulis array byte ke dalam file, cukup gunakanFile.WriteAllBytes()
metode.Semoga ini membantu.
Anda dapat menemukan informasi lebih lanjut dan kode contoh di sini .
sumber
Apakah Anda hanya menginginkan piksel atau seluruh gambar (termasuk header) sebagai array byte?
Untuk piksel: Gunakan
CopyPixels
metode di Bitmap. Sesuatu seperti:sumber
Kode:
sumber
Jika Anda tidak mereferensikan imageBytes untuk membawa byte dalam aliran, metode tidak akan mengembalikan apa pun. Pastikan Anda mereferensikan imageBytes = m.ToArray ();
[NB] Jika Anda masih tidak melihat gambar di browser, saya menulis langkah pemecahan masalah mendetail
diselesaikan! -iis-not-serving-css, -images-and-javascript
sumber
Ini adalah Kode untuk mengubah gambar jenis apa pun (misalnya PNG, JPG, JPEG) menjadi array byte
sumber
Untuk mengubah gambar menjadi array byte, kode diberikan di bawah ini.
Untuk mengubah array Byte ke Image Kode diberikan di bawah ini Kode ditangani
A Generic error occurred in GDI+
di Image Save.sumber
Kode ini mengambil 100 baris pertama dari tabel di SQLSERVER 2012 dan menyimpan gambar per baris sebagai file di disk lokal
sumber