コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }