Dalam bidang pemprosesan imej, "kesilapan umum dalam GDI" keabnormalan adalah masalah biasa. Masalah ini, terutamanya apabila cuba menukar imej JPEG ke dalam aliran memori, maklumat ralat kaburnya sering mengelirukan pemaju.
Selepas penyelidikan, didapati bahawa keabnormalan berasal dari operasi aliran memori. Kesalahpahaman umum ialah aliran memori boleh ditutup apabila objek imej yang sepadan masih digunakan, tetapi ini tidak berlaku.
punca akar
Sebab akar masalah ialah GDI (perpustakaan grafik yang digunakan dalam .NET untuk pemprosesan imej) bergantung pada objek aliran memori terbuka untuk mendapatkan maklumat piksel dari imej. Apabila aliran ditutup, GDI tidak akan dapat mengakses piksel, mengakibatkan kegagalan pemeliharaan imej.
penyelesaian
Untuk menyelesaikan masalah ini, aliran memori mesti dibuka sehingga imej berjaya disimpan. Ini boleh dilaksanakan melalui langkah -langkah berikut:
Gunakan Buat imej, di manaadalah aliran memori terbuka.
Image.FromStream(m)
Simpan imej ke aliran output sasaran, sambil mengekalkan aliran memori m
dibuka. Image.Save(stream, format)
m
ringkasan m
Memahami interaksi antara aliran memori dan objek imej GDI adalah penting untuk mengelakkan "kesilapan umum dalam GDI". Dengan mengikuti prinsip mengekalkan pembukaan aliran memori semasa pemprosesan imej dan pemeliharaan, pemaju dapat memastikan bahawa proses itu lancar dan mengelakkan isu -isu yang mengecewakan. Atas ialah kandungan terperinci Kenapa JPEG ke MemoryStream Conversion dalam GDI membuang 'kesilapan generik'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!