首页 > 其他 > 详细

分享一段,图片加水印的代码。本人修改过多次

时间:2019-04-19 15:39:13      阅读:162      评论:0      收藏:0      [点我收藏+]
        /// <summary>
        /// 图片加水印文字
        /// </summary>
        /// <param name="imgPath">原图片路径</param>
        /// <param name="newImgPath">新图片路径</param>
        /// <param name="text">水印文字</param>
        /// <param name="Alpha">透明度</param>
        /// <param name="fontsize">字体大小</param>
        public static bool PicAddWaterText(string imgPath,string newImgPath, string text, int Alpha = 1, int fontsize = 30)
        {
            try
            {
                //text = text + "仅限xx使用";
                //System.Drawing.Image imgPhoto = System.Drawing.Image.FromStream(oldstream);//文件流
                System.Drawing.Image imgPhoto = System.Drawing.Image.FromFile(imgPath);
                int imgPhotoWidth = imgPhoto.Width;
                int imgPhotoHeight = imgPhoto.Height;

                Bitmap bmPhoto = new Bitmap(imgPhotoWidth, imgPhotoHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

                bmPhoto.SetResolution(72, 72);
                Graphics gbmPhoto = Graphics.FromImage(bmPhoto);
                //gif背景色
                gbmPhoto.Clear(Color.FromName("White"));
                gbmPhoto.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                gbmPhoto.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                gbmPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, imgPhotoWidth, imgPhotoHeight), 0, 0, imgPhotoWidth, imgPhotoHeight, GraphicsUnit.Pixel);
                imgPhoto.Dispose();
                System.Drawing.Font font = null;
                System.Drawing.SizeF crSize = new SizeF();
                font = new Font("宋体", fontsize, FontStyle.Regular);
                //测量指定区域
                crSize = gbmPhoto.MeasureString(text, font);
                float y = (imgPhotoHeight - crSize.Height)/2;
                float x = (imgPhotoWidth - crSize.Width)/2;
                System.Drawing.StringFormat StrFormat = new System.Drawing.StringFormat();
                StrFormat.Alignment = System.Drawing.StringAlignment.Center;                
                //画两次制造透明效果
                var writeColor = Color.FromArgb(Alpha, System.Drawing.ColorTranslator.FromHtml("#999"));
                //var writeColor = Color.FromArgb(255, Color.Red);
                //System.Drawing.SolidBrush semiTransBrush2 = new System.Drawing.SolidBrush(Color.FromArgb(Alpha, Color.Red));
                System.Drawing.SolidBrush semiTransBrush2 = new System.Drawing.SolidBrush(writeColor);
               
                //float _x = -20, _y = y + 10;
                //if (imgPhotoHeight > imgPhotoWidth)
                //{
                //   // gbmPhoto.RotateTransform(-60);
                //    _y = 0; _x = 0;
                //}
                //else { gbmPhoto.RotateTransform(320); }
                gbmPhoto.TranslateTransform(x,y);
                var Var_trans = gbmPhoto.Transform;
                Var_trans.Shear(0.4F,0.00F);
                gbmPhoto.Transform = Var_trans;
                //gbmPhoto.DrawString(text, font, semiTransBrush2, _x, _y);
                // gbmPhoto.DrawString(text, font, semiTransBrush2, imgPhotoWidth, imgPhotoHeight / 2);
                gbmPhoto.DrawString(text, font, semiTransBrush2, 10, 10);
                //gbmPhoto.DrawString(text, font, semiTransBrush2, 0, y);


                //System.Drawing.SolidBrush semiTransBrush = new System.Drawing.SolidBrush(writeColor);
                // gbmPhoto.DrawString(text, font, semiTransBrush, _x, _y);
                //gbmPhoto.DrawString(text, font, semiTransBrush, imgPhotoWidth / 2, imgPhotoHeight / 2);
                //gbmPhoto.DrawString(text, font, semiTransBrush, 0, y);

                //gbmPhoto.DrawString(text, font, semiTransBrush2, 0, y);
                //Stream newStream = new MemoryStream();

                bmPhoto.Save(newImgPath, System.Drawing.Imaging.ImageFormat.Jpeg);

                gbmPhoto.Dispose();               
                bmPhoto.Dispose();
                //imgPhoto1.Dispose();
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        }

 

分享一段,图片加水印的代码。本人修改过多次

原文:https://www.cnblogs.com/Blogs-Wang/p/10736101.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!