Загрузите BitmapSource и сохраните использование того же имени в WPF-> IOException

Рассмотрим запуск expand.grid для фрейма данных B для всех комбинаций уникальных координат. Затем объединитесь с фреймом данных A:

B_all_combns <- expand.grid(lon = unique(B$lon), lat = unique(B$lat))

A_subset <- merge(A, B_all_combns, by=c("lon", "lat"))
5
задан sdippl 12 February 2009 в 16:47
поделиться

5 ответов

Вдохновленный комментариями я вошел в эту проблему, я решил проблему путем чтения всех байтов в memorystream и использования ее в качестве Sreamsource BitmapImage.

Эти работы отлично:

if (File.Exists(filePath))
{
    MemoryStream memoryStream = new MemoryStream();

    byte[] fileBytes = File.ReadAllBytes(filePath);
    memoryStream.Write(fileBytes, 0, fileBytes.Length);
    memoryStream.Position = 0;

    image.BeginInit();
    image.StreamSource = memoryStream;

    if (decodePixelWidth > 0)
        image.DecodePixelWidth = decodePixelWidth;

    image.EndInit();
}
9
ответ дан 18 December 2019 в 08:31
поделиться

Добавьте следующую строку к своему коду загрузки:

image.CacheOption = BitmapCacheOption.OnLoad;

Это загрузится открытый файл, считать его в память и закрыть все это во время изображения. EndInit. Значение по умолчанию BitmapCacheOption. Значение по умолчанию имеет нечетное поведение открытия файла, чтения его в память, но еще закрытие его во время изображения. EndInit.

3
ответ дан 18 December 2019 в 08:31
поделиться

Теперь я не уверен, можно ли к этому относиться BitmapImage, но у меня была очень похожая проблема с сохранением измененного образа в исходный файл в GDI + здесь

Метод загрузки изображения из файла сохраняет блокировку открытой на файле, пока объект изображения не расположен.

Возможно, это - то же самое с bitmapimage.urisource. Не играя вокруг Вас мог скопировать изображение в памяти и расположить оригинал таким образом разблокирование файла?

0
ответ дан 18 December 2019 в 08:31
поделиться

Установка CacheOption к BitmapCacheOption. OnLoad, не решит Вашу проблему. Я думаю, что существует ошибка, но у меня была та же проблема. Наконец я загрузил свое изображение в поток памяти и расположил BitmapImage прежде, чем сохранить образ в файл.

0
ответ дан 18 December 2019 в 08:31
поделиться

Вот еще одно решение, основанное на исходном коде загрузки:

var image = new BitmapImage();
image.BeginInit();

// overwrite cache if already exists, to refresh image
image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
// load into memory and unlock file
image.CacheOption = BitmapCacheOption.OnLoad;

image.UriSource = uri;
if (decodePixelWidth > 0) image.DecodePixelWidth = decodePixelWidth;
image.EndInit();
7
ответ дан 18 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

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