This project has moved. For the latest updates, please go here.

Is MagickImage thread safe for reading?

Mar 19, 2015 at 2:08 PM
Hello.
I need to put watermark image on different images on the fly in multithreaded environment (asp.net website). Instead of loading MagickImage for watermark each time and use it in image.Composite I wanted to load it once and store in static field. So is MagickImage thread safe for read operation (I don't think Composite modifies the source image)?
Coordinator
Mar 19, 2015 at 5:20 PM
Reading from a MagickImage is thread safe. You can do the following without any problems:
using (MagickImage watermark = new MagickImage(@"C:\watermark.png"))
{
  Parallel.ForEach(Directory.GetFiles(@"c:\input", "*.png"), (string fileName) =>
  {
    using (MagickImage image = new MagickImage(fileName))
    {
      image.Composite(watermark, CompositeOperator.Over);
      image.Write(@"c:\output\uniquefilename.png");
    }
  });
}
Mar 20, 2015 at 5:15 AM
Edited Mar 20, 2015 at 6:15 AM
Thank you!