Page 1 of 1

Memory error saving collection

Posted: 2019-06-05T13:06:39-07:00
by stoneyowl
I am developing a product that uses ImageMagick.Net as a screen capture video mechanism. I grab bmp images from a panel and pass the list of bitmaps to the 'MagickImageCollection' instance. Then the collection is optimized, color reduced andwritten to disk. This works up to a point, but I am getting this error: "memory allocation failed `C:\Temp\PRO_Engine_New.gif' @ error/quantize.c/QuantizeImage/2711" after around 40 or 50 bitmaps.

Source code in question is:

Code: Select all

        using (MagickImageCollection collection = new MagickImageCollection())
         {
            for (int i = 0; i < video.Count; i++)
            {
               Bitmap bmp = video[i];
               MagickImage img = new MagickImage(bmp);
               //img.Resample(600, 400);
               collection.Add(img);
               collection[collection.Count - 1].AnimationDelay = 150;
               collection[collection.Count - 1].AnimationIterations = 1;

               tsProgress.Value++;
               Application.DoEvents();
            }

            // Optionally reduce colors
            try
            {
               QuantizeSettings settings = new QuantizeSettings();
               settings.Colors = 128;
               collection.Quantize(settings);
               collection.Optimize();
               tsProgress.Value++;
               Application.DoEvents();
            }
            catch (Exception)
            {
               // do not reduce colors
            }
            // Optionally optimize the images (images should have the same size).

            // Save gif
            collection.Write(filename);
         }
What am I doing wrong here? I have 32GB of RAM and a little over 2 TB of SSD space.