public override void ApplyFilter(ImageGenerationContext context, FastBitmap bitmap) { if (Width == Unit.Empty && Height == Unit.Empty) throw new DynamicImageException("At least one of Width or Height must be set."); string sourceFileName = Path.GetTempFileName(); try { bitmap.Save(sourceFileName); string outputFileName = Path.GetTempFileName(); try { int width = (Width == Unit.Empty) ? bitmap.Width : Unit.GetCalculatedValue(Width, bitmap.Width); int height = (Height == Unit.Empty) ? bitmap.Height : Unit.GetCalculatedValue(Height, bitmap.Height); new CairWrapper(context).ProcessImage(sourceFileName, outputFileName, int.MaxValue, width, height, ConvolutionType); FastBitmap output = new FastBitmap(File.ReadAllBytes(outputFileName)); if (output.InnerBitmap != null) bitmap.InnerBitmap = output.InnerBitmap; } finally { File.Delete(outputFileName); } } finally { File.Delete(sourceFileName); } }
public void CropFilter_UseXYWidthHeight_CalculatedCorrectly() { FastBitmap bitmap = new FastBitmap("Filters\\Images\\Tulips.png", UriKind.Relative); CropFilter cropFilter = new CropFilter(); cropFilter.X = 30; cropFilter.Y = 30; cropFilter.Width = 200; cropFilter.Height = 200; cropFilter.ApplyFilter(bitmap); Assert.AreEqual(200, bitmap.Width); Assert.AreEqual(200, bitmap.Height); bitmap.Save("TulipsCropped200x200.png"); FastBitmap expectedBitmap = new FastBitmap("Filters\\Images\\TulipsCropped200x200.png", UriKind.Relative); FastBitmapTestUtility.AssertEqual(expectedBitmap, bitmap); }