Hi,
I'm using Magick.net in a very high volume multi threaded photo processing application. I see random errors like below. This usually on photos that are larger, I have to deal with JPG files that are sometimes up to 40 megabytes in file size. But, i can see errors like this even on 5 megabyte files. The servers have plenty of memory. Is there anything i can do to avoid this other than forcing the application to only process one photo at a time?
I am using Magick.Net-Q16-AnyCPU version 7.0.3.902
ImageMagick.MagickCorruptImageErrorException\",\"Message\":\"Insufficient memory (case 4)
at ImageMagick.MagickImage.NativeMagickImage.WriteBlob(MagickSettings settings, UIntPtr& length)
at ImageMagick.MagickImage.Write(Stream stream)
Comments: Thank you very much for your response. Yes through out the entire application i am dealing with the JPGs as Memory streams and never on disk. So every magick.net operation is stream based or byte array based. This is because the files live on AWS S3 and there are multiple servers that perform different operations on the files so each server never holds the physical files locally. The bring the file bytes down over HTTP perform jobs on the JPG and push the bytes back over HTTP. I could change it around to bring the bytes down and into a temporary jpg files i guess but that would slow things down. I'll experiment a bit.
I'm using Magick.net in a very high volume multi threaded photo processing application. I see random errors like below. This usually on photos that are larger, I have to deal with JPG files that are sometimes up to 40 megabytes in file size. But, i can see errors like this even on 5 megabyte files. The servers have plenty of memory. Is there anything i can do to avoid this other than forcing the application to only process one photo at a time?
I am using Magick.Net-Q16-AnyCPU version 7.0.3.902
ImageMagick.MagickCorruptImageErrorException\",\"Message\":\"Insufficient memory (case 4)
at ImageMagick.MagickImage.NativeMagickImage.WriteBlob(MagickSettings settings, UIntPtr& length)
at ImageMagick.MagickImage.Write(Stream stream)
Comments: Thank you very much for your response. Yes through out the entire application i am dealing with the JPGs as Memory streams and never on disk. So every magick.net operation is stream based or byte array based. This is because the files live on AWS S3 and there are multiple servers that perform different operations on the files so each server never holds the physical files locally. The bring the file bytes down over HTTP perform jobs on the JPG and push the bytes back over HTTP. I could change it around to bring the bytes down and into a temporary jpg files i guess but that would slow things down. I'll experiment a bit.