Masalah:
Apabila menyimpan imej menggunakan Imej .Save(...) dengan aliran memori, pembangun mungkin menghadapi pengecualian GDI jika aliran memori ditutup sebelum menyimpan. Walau bagaimanapun, dalam senario penciptaan imej dinamik, menutup strim sebelum menyimpan adalah perlu.
Senario Kod:
Bitmap image2; using (Stream originalBinaryDataStream2 = new MemoryStream(data)) { image2 = new Bitmap(originalBinaryDataStream2); }
Dalam senario ini, strim memori originalBinaryDataStream2 ditutup apabila keluar dari blok menggunakan. Selepas itu, menyimpan imej imej2 menyebabkan pengecualian GDI.
Penyelesaian:
Memandangkan strim memori tidak memerlukan penutupan eksplisit, adalah tidak perlu untuk menutupnya secara manual. Walau bagaimanapun, menutup objek Bitmap akan menutup secara automatik strim memori yang berkaitan.
Bitmap image2; using (Stream originalBinaryDataStream2 = new MemoryStream(data)) { image2 = new Bitmap(originalBinaryDataStream2); } image2.Dispose(); // Also closes the memory stream
Dengan melupuskan Bitmap, strim memori ditutup dengan betul, memastikan imej boleh disimpan tanpa pengecualian.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Pengecualian GDI Apabila Menyimpan Imej ke MemoryStream Tertutup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!