У меня проблемы с сохранением изображения из памяти.
Вот мой код:
MemoryStream ms = new MemoryStream(onimg);
if (ms.Length > 0)
{
Bitmap bm = new Bitmap(ms);
returnImage = (Image)bm.Clone();
}
ms.Close();
returnImage.Save(@"C:\img.jpeg");
И на returnImage.Save
у меня есть следующее исключение:
В GDI + произошла общая ошибка.
Если я не закрываю MemoryStream
, все в порядке, но через некоторое время требуется много памяти.
Как можноЯ делаю это?
РЕДАКТИРОВАТЬ: Это Сохранить только демонстрация .. Мне действительно нужно returnImage для размещения его в ObservableCollection и отображения в окне, когда мне нужно конвертировать в System.Windows.Media.Imaging.BitmapImage ();
[ValueConversion(typeof(System.Drawing.Image), typeof(System.Windows.Media.ImageSource))]
public class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
// empty images are empty...
if (value == null) { return null; }
var image = (System.Drawing.Image)value;
// Winforms Image we want to get the WPF Image from...
var bitmap = new System.Windows.Media.Imaging.BitmapImage();
bitmap.BeginInit();
MemoryStream memoryStream = new MemoryStream();
// Save to a memory stream...
image.Save(memoryStream, ImageFormat.Bmp);
// Rewind the stream...
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
bitmap.StreamSource = memoryStream;
bitmap.EndInit();
return bitmap;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return null;
}
}
И XAML, когда я делаю это
<DataTemplate>
<Image Width="32" Height="32" Source="{ Binding Thumb, Converter={StaticResource imageConverter} }" />
</DataTemplate>