public override Image Process(Image inputImage, out bool isProcessed) { Image image; Image image1; Graphics graphic; if (this.WatermarkImage == null && string.IsNullOrEmpty(this.WatermarkImagePhysicalPath)) { isProcessed = false; return(inputImage); } image = (this.WatermarkImage ?? Image.FromFile(this.WatermarkImagePhysicalPath)); if (!WatermarkFilterBase.IsPixelFormatIndexed(inputImage.PixelFormat)) { graphic = Graphics.FromImage(inputImage); image1 = inputImage; } else { Bitmap bitmap = new Bitmap(inputImage.Width, inputImage.Height, PixelFormat.Format24bppRgb); graphic = Graphics.FromImage(bitmap); graphic.DrawImage(inputImage, 0, 0); image1 = bitmap; } graphic.CompositingQuality = CompositingQuality.HighQuality; graphic.InterpolationMode = InterpolationMode.HighQualityBicubic; Rectangle watermarkArea = this.GetWatermarkArea(inputImage, image); ImageAttributes imageAttribute = this.BuildImageAttributes(); graphic.DrawImage(image, watermarkArea, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imageAttribute); isProcessed = true; return(image1); }
public override Image Process(Image inputImage, out bool isProcessed) { Image image; Graphics graphic; Font font; if (!WatermarkFilterBase.IsPixelFormatIndexed(inputImage.PixelFormat)) { graphic = Graphics.FromImage(inputImage); image = inputImage; } else { Bitmap bitmap = new Bitmap(inputImage.Width, inputImage.Height, PixelFormat.Format24bppRgb); graphic = Graphics.FromImage(bitmap); graphic.DrawImage(inputImage, 0, 0); image = bitmap; } graphic.CompositingQuality = CompositingQuality.HighQuality; graphic.InterpolationMode = InterpolationMode.High; Rectangle watermarkArea = this.GetWatermarkArea(graphic, inputImage, out font); StringFormat stringFormat = new StringFormat(); int num = Convert.ToInt32(256f * base.Opacity); SolidBrush solidBrush = new SolidBrush(Color.FromArgb(num, 0, 0, 0)); graphic.DrawString(this.Text, font, solidBrush, (float)watermarkArea.X + 1f, (float)watermarkArea.Y + 1f, stringFormat); SolidBrush solidBrush1 = new SolidBrush(Color.FromArgb(153, 255, 255, 255)); graphic.DrawString(this.Text, font, solidBrush1, (float)watermarkArea.X, (float)watermarkArea.Y, stringFormat); solidBrush.Dispose(); solidBrush1.Dispose(); isProcessed = true; return(image); }