Skip to main content

Notifications

Announcements

No record found.

Microsoft Dynamics CRM (Archived)
Under review by Community Managers

Under review

Thank you for your post! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

“Out of Memory” plugin exception while compressing PNG images

Posted on by 57

Hi,

Due to some business requirements, we wanted that whenever an image is attached to the Note it gets compressed to a certain size. So, we developed plugin in order to compress the images while attaching to the Notes.

We retrieved the “documentbody” which return the base64String which we used to create image using the FromStream() as shown in below code,

                using (MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length))

                {

                    Image image = Image.FromStream(ms, false);

 

                    //get width and height from LIST with imageExtension as key

                    var imgProperty = imgPropertyList.Where(img => img.ImageType == fileExtension).FirstOrDefault();

                    int width = imgProperty.Width;

                    int height = imgProperty.Height;

                    var ratioX = (double)width / image.Width;

                    var ratioY = (double)height / image.Height;

                    var ratio = Math.Min(ratioX, ratioY);

 

                    var newWidth = (int)(image.Width * ratio);

                    var newHeight = (int)(image.Height * ratio);

 

                    var newImage = new Bitmap(newWidth, newHeight);

 

                    using (var graphics = Graphics.FromImage(newImage))

                        // Draw the new graphic based on the resized bitmap

                        graphics.DrawImage(image, 0, 0, newWidth, newHeight);

                }

But suddenly the above code stops working for PNG type images only in the dynamics CRM as we are getting “Out of Memory” exception on the “Image.FromStream(ms, false);” line.

Note: we tried by adding the third parameter in the FromStream() i.e. “validateImageData” to “False” but this is also causing with the same “Out of Memory” issue on the “graphics.DrawImage(image, 0, 0, newWidth, newHeight);” line.

Can anyone shed light on how to resolve this “Out of Memory” issue?

Thanks!

Helpful resources

Quick Links

December Spotlight Star - Muhammad Affan

Congratulations to a top community star!

Top 10 leaders for November!

Congratulations to our November super stars!

Tips for Writing Effective Suggested Answers

Best practices for providing successful forum answers ✍️

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 291,280 Super User 2024 Season 2

#2
Martin Dráb Profile Picture

Martin Dráb 230,214 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans