zoukankan      html  css  js  c++  java
  • C#给图片加文字水印

        public class TxtWaterMark
        {
            public enum WaterPositionMode
            {
                LeftTop,//左上
                LeftBottom,//左下
                RightTop,//右上
                RightBottom,//右下
                Center,//中间
                Other//其他,若选此项AddWaterText方法内自己把xValue和yValue穿进去
            }
            /// <summary>
            /// 给图片加文字水印
            /// </summary>
            /// <param name="oldpath">图片地址</param>
            /// <param name="savepath">加上文字水印以后图片保存地址</param>
            /// <param name="watertext">水印文字</param>
            /// <param name="position">水印位置</param>
            /// <param name="fontName">水印文字字体</param>
            /// <param name="fontSize">水印文字大小</param>
            /// <param name="color">水印文字颜色</param>
            /// <param name="alpha">水印文字透明度</param>
            /// <param name="isBold">水印文字是否加粗</param>
            /// <param name="xValue">水印位置position Other选项下设置</param>
            /// <param name="yValue">水印位置position Other选项下设置</param>
            public static void AddWaterText(string oldpath, string savepath, string watertext, WaterPositionMode position, string fontName, int fontSize, string fontColor, int alpha, bool isBold, float xValue = 0, float yValue = 0)
            {
                Image image = Image.FromFile(oldpath);
                Bitmap bitmap = new Bitmap(image.Width, image.Height);
                Graphics graphics = Graphics.FromImage(bitmap);
                graphics.Clear(Color.White);
                graphics.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
                Font font = new Font(fontName, fontSize, FontStyle.Bold);
                if (!isBold)
                {
                    font = new Font(fontName, fontSize);
                }
    
                SizeF ziSizeF = new SizeF();
                ziSizeF = graphics.MeasureString(watertext, font);
                float x = 0f;
                float y = 0f;
                switch (position)
                {
    
                    case WaterPositionMode.LeftTop:
                        x = ziSizeF.Width / 2f;
                        y = 0f;
                        break;
                    case WaterPositionMode.LeftBottom:
                        x = ziSizeF.Width / 2f;
                        y = image.Height - ziSizeF.Height;
                        break;
                    case WaterPositionMode.RightTop:
                        x = image.Width * 1f - ziSizeF.Width / 2f;
                        y = 0f;
                        break;
                    case WaterPositionMode.RightBottom:
                        x = image.Width - ziSizeF.Width;
                        y = image.Height - ziSizeF.Height;
                        break;
                    case WaterPositionMode.Center:
                        x = image.Width / 2;
                        y = image.Height / 2 - ziSizeF.Height / 2;
                        break;
                    case WaterPositionMode.Other:
                        x = xValue + ziSizeF.Width / 2f;
                        y = yValue;
                        break;
                }
                try
                {
                    StringFormat stringFormat = new StringFormat { Alignment = StringAlignment.Center };
                    SolidBrush solidBrush = new SolidBrush(Color.FromArgb(alpha < 0 ? 0 : alpha, 0, 0, 0));
                    graphics.DrawString(watertext, font, solidBrush, x + 1f, y + 1f, stringFormat);
                    SolidBrush brush = new SolidBrush(Color.FromArgb(alpha < 0 ? 0 : alpha, ColorTranslator.FromHtml(fontColor)));
                    graphics.DrawString(watertext, font, brush, x, y, stringFormat);
                    solidBrush.Dispose();
                    brush.Dispose();
                    bitmap.Save(savepath, ImageFormat.Png);
                }
                catch (Exception e)
                {
    
    
                }
                finally
                {
                    bitmap.Dispose();
                    image.Dispose();
                }
    
            }
        }
  • 相关阅读:
    LF.25.K Smallest In Unsorted Array
    LC.102. Binary Tree Level Order Traversal
    LF.236.Search Insert Position
    发生错误 1069 sqlserver
    manualresetevent的用法学习
    xml selectnodes
    Flask 路由 , 初始化 , 配置Config , 蓝图BluePrint , 装饰器
    Python垃圾回收机制
    Odoo 动作Action
    Odoo 权限简介
  • 原文地址:https://www.cnblogs.com/blazeZzz/p/9558050.html
Copyright © 2011-2022 走看看