Exemple #1
0
        ///<summary>
        /// 添加图片水印
        /// </summary>
        /// <param name="watermarkImageFile">水印图片</param>
        /// <param name="sourceImageFile">原文件</param>
        /// <param name="position">水印位置</param>
        /// 时间:2015-12-17 15:48
        /// 备注:
        public static void AttachPng(string watermarkImageFile, string sourceImageFile, ImgWaterPosition position)
        {
            string      sourceImgTmpPath = sourceImageFile.CreateTempFilePath();
            Image       sourceImg        = Image.FromFile(sourceImgTmpPath);
            ImageFormat sourceImgFmt     = sourceImg.RawFormat;
            int         sourceImgH       = sourceImg.Height,
                        sourceImaW = sourceImg.Width;

            using (Bitmap sourceBmp = new Bitmap(sourceImaW, sourceImgH))
            {
                using (Graphics graphics = Graphics.FromImage(sourceBmp))
                {
                    // 设置画布的描绘质量
                    graphics.CompositingQuality = CompositingQuality.HighQuality;
                    graphics.SmoothingMode      = SmoothingMode.HighQuality;
                    graphics.InterpolationMode  = InterpolationMode.HighQualityBicubic;
                    graphics.DrawImage(sourceImg, new Rectangle(0, 0, sourceImaW, sourceImgH),
                                       0, 0, sourceImaW, sourceImgH, GraphicsUnit.Pixel);
                    sourceImg.Dispose();
                    sourceImg = Image.FromFile(watermarkImageFile);
                    SetWaterMarkImagePosition(graphics, sourceImg, sourceImaW, sourceImgH, position);
                }

                SetWaterMarkImageQuality(sourceBmp, sourceImageFile, sourceImgFmt);
                sourceImg.Dispose();
            }
            File.Delete(sourceImgTmpPath);
        }
Exemple #2
0
        private static void SetWaterMarkImagePosition(Graphics sourceG, Image sourceImage, int sourceImageWidth, int sourceImageHight, ImgWaterPosition position)
        {
            Size sourceSize = CreateImageSize(sourceImageWidth, sourceImageHight, sourceImage);
            int  x          = 0,
                 y          = 0,
                 padding    = 10;

            switch (position)
            {
            case ImgWaterPosition.Center:
                x = (sourceImageWidth - sourceSize.Width) / 2;
                y = (sourceImageHight - sourceSize.Height) / 2;
                break;

            case ImgWaterPosition.TopLeft:
                x = padding;
                y = padding;
                break;

            case ImgWaterPosition.TopRight:
                x = (sourceImageWidth - sourceSize.Width) - padding;
                y = padding;
                break;

            case ImgWaterPosition.BottomLeft:
                x = padding;
                y = (sourceImageHight - sourceSize.Height) - padding;
                break;

            default:
                x = (sourceImageWidth - sourceSize.Width) - padding;
                y = (sourceImageHight - sourceSize.Height) - padding;
                break;
            }

            sourceG.DrawImage(sourceImage, new Rectangle(x, y, sourceSize.Width, sourceSize.Height),
                              0, 0, sourceImage.Width, sourceImage.Height, GraphicsUnit.Pixel);
        }