Я вижу странное поведение изображения.Странное поведение изображения
У меня есть два метода, которые вычисляют изображение тепловой карты. один метод работает в потоке графического интерфейса пользователя, а другой - в фоновом потоке. Оба метода должны быть одинаковыми, а вывод как png кажется хорошим. Созданное изображение GUI-потока может загружаться, но созданный из фонового потока не является.
Я сохраняю вычисленное изображение как файл на своем жестком диске и загружаю его снова. Когда я загружаю его и назначаю его источнику изображения, он не равен нулю. Но когда программа оставляет метод выделения, image.source имеет значение NULL. Я не понимаю, почему.
Это код:
private void LoadImageClicked(object sender, RoutedEventArgs e)
{
this.ImageHeatMap.BeginInit();
this.ImageHeatMap.Source = new BitmapImage(new Uri(@"HeatMapImage.png", UriKind.Relative));
this.ImageHeatMap.EndInit();
}
и это его, как я сохранить изображение как PNG:
public void SaveFile(BitmapSource source, string filePath)
{
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(source));
encoder.Save(fileStream);
}
}
Интересно, что я не могу просмотреть свойство Image.Source.Height в отладке Режим. но с рабочим файлом я могу прочитать это свойство. Debug выглядит следующим образом: сообщение
ошибки в английском (бесплатно перевод): "this.Image: heatMap.Source.Height" бросил исключение "System.IO.IOException" типа
Может кто-нибудь помочь мне понять, где проблема? Потому что я не понимаю, почему я не могу загрузить изображение. Я могу открыть его с помощью программы просмотра изображений Windows.
Я думаю, что проблема в метаданных, но я не знаю - на данный момент - как это исправить.
GUI поток и фоновый поток используют один и тот же метод Save-? – DJmRek
Да. Но тот, что работает с графическим интерфейсом, работает, но фон один нет. Я исправил это с помощью небольшого взлома/обходного пути, но было бы неплохо узнать, почему есть разница. – Jens
Итак, я попробовал несколько сценариев и могу только воспроизвести ваши ошибки для Height, Width, Metadata, если файл, названный Uri don ' t в папке программ. Вы пробовали абсолютный Ури? Und es wär schön wenn man wüsste был dein 'ImageHeatMap' Object bei' BeginInit' und' EndInit' macht;) – DJmRek