У мене є кілька двійкових даних, які я хочу зберегти як зображення. Коли я намагаюся зберегти зображення, він видає виняток, якщо потік пам'яті, який використовується для створення зображення, був закритий перед збереженням. Причиною цього я є те, що я динамічно створюю зображення і як такі .. мені потрібно використовувати потік пам'яті.
це код:
[TestMethod]
public void TestMethod1()
{
// Grab the binary data.
byte[] data = File.ReadAllBytes("Chick.jpg");
// Read in the data but do not close, before using the stream.
Stream originalBinaryDataStream = new MemoryStream(data);
Bitmap image = new Bitmap(originalBinaryDataStream);
image.Save(@"c:\test.jpg");
originalBinaryDataStream.Dispose();
// Now lets use a nice dispose, etc...
Bitmap2 image2;
using (Stream originalBinaryDataStream2 = new MemoryStream(data))
{
image2 = new Bitmap(originalBinaryDataStream2);
}
image2.Save(@"C:\temp\pewpew.jpg"); // This throws the GDI+ exception.
}
Хтось має пропозиції щодо того, як я міг би зберегти зображення із закритим потоком? Я не можу покластися на розробників, які пам’ятають закрити потік після збереження зображення. Фактично, у розробника не було б НЕ IDEA, щоб зображення генерувалося за допомогою потоку пам'яті (тому що це відбувається в якомусь іншому коді в іншому місці).
Я дуже розгублений :(
using
блоку. Я думаю, що originalBinaryDataStream2
автоматично було утилізовано наприкінці використання. І це кине виняток.