приложение для моей фотобудки Net 4.0 Wpf, использующее Canon EDSDK Api, постепенно перестало работать из-за постоянных ошибок нехватки памяти, таких как:
System.OutOfMemoryException: недостаточно памяти. в
System.Drawing.Image.FromStream (Потоковый поток, логическое значение
useEmbeddedColorManagement, Boolean validateImageData)
Часто случается, когда приложение захватывает и загружает изображение с камеры на компьютер, а затем пытается обрезать изображение до определенных размеров
Вот фрагмент, где происходят наиболее частые аварии:
private void MainCamera_DownloadReady(EOSDigital.API.Camera sender, EOSDigital.API.DownloadInfo Info)
{
try
{
Info.FileName = "CamPic.jpg";
string dir = AppDomain.CurrentDomain.BaseDirectory;
sender.DownloadFile(Info, dir); //Download image from camera to PC
//Crop image to specific dimensions
Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
{
PhotoObject ph;
using (ImageFactory imf = new ImageFactory())
{
imf.Load(AppDomain.CurrentDomain.BaseDirectory + @"\CamPic.jpg");
if (((WebcamImageVM)DataContext).IsPortrait)
{
imf.Crop(new System.Drawing.Rectangle(600, 0, 720, 1080));
ph = new PhotoObject(WebcamImageVM.GetBitmapSource(new Bitmap(imf.Image)), true);
}
else
{
imf.Crop(new System.Drawing.Rectangle(150, 0, 1620, 1080));
ph = new PhotoObject(WebcamImageVM.GetBitmapSource(new Bitmap(imf.Image)), false);
}
}
}));
}
catch (Exception ex)
{
Logger.LogEvent(EventType.Error, "Failed to take photo with DSLR: " + ex.Message);
}
}
Любой совет будет принята с благодарностью