Изображение. Сохранить (..) бросает GDI + исключение, потому что поток памяти закрывается

Вы должны использовать [] нотацию для динамического набора ключей.

var jsonVariable = {};
for(i=1; i<3; i++) {        
 var jsonKey  = i+'name';
 jsonVariable[jsonKey] = 'name1';

}

Теперь в ES6 вы можете использовать синтаксис объектного литерала для динамического создания ключей объектов, просто оберните переменную в []

var key  = i + 'name';
data = {
    [key] : 'name1',
}
103
задан angry person 3 December 2008 в 08:30
поделиться

2 ответа

Поскольку это - MemoryStream, Вы действительно не делаете потребность для закрытия потока - ничего плохо не произойдет, если Вы не сделаете, хотя, очевидно, это - хорошая практика для расположения чего-либо, что это доступно так или иначе. (См. этот вопрос для больше на этом.)

Однако Вы должны расположить Битовый массив - и это закроет поток для Вас. В основном, как только Вы даете Растровому конструктору поток, он "владеет" потоком, и Вы не должны закрывать его. Как говорится в документах для того конструктора :

необходимо сохранить поток открытым в течение времени жизни Битового массива.

я не могу найти документы, обещающие закрыть поток, когда Вы располагаете битовый массив, но необходимо быть в состоянии проверить это довольно легко.

165
ответ дан Community 5 November 2019 в 11:15
поделиться

Скопируйте растровое изображение. Вы должны держать поток открытым в течение всего времени существования растрового изображения.

При отрисовке образа: System.Runtime.InteropServices.ExternalException: в GDI произошла общая ошибка

    public static Image ToImage(this byte[] bytes)
    {
        using (var stream = new MemoryStream(bytes))
        using (var image = Image.FromStream(stream, false, true))
        {
            return new Bitmap(image);
        }
    }

    [Test]
    public void ShouldCreateImageThatCanBeSavedWithoutOpenStream()
    {
        var imageBytes = File.ReadAllBytes("bitmap.bmp");

        var image = imageBytes.ToImage();

        image.Save("output.bmp");
    }
2
ответ дан 24 November 2019 в 04:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: