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!