Beispiel #1
0
        /// <summary>
        /// 为图像添加水印,并生成新的图像
        /// </summary>
        /// <param name="图像">源图像</param>
        /// <param name="水印图像">水印图像</param>
        /// <param name="水印方位">相对于源图像的方位,在不冲突的情况下可复选,比如“水印方位.右|水印方位.下”</param>
        /// <param name="水平边距">左侧或右侧的边距</param>
        /// <param name="垂直边距">上方或下方的边距</param>
        /// <returns>添加了水印的图片</returns>
        public static Bitmap 添加水印(this Image 图像, Image 水印图像, 对齐方位 水印方位, int 水平边距, int 垂直边距)
        {
            Bitmap Bmp = 图像.Clone() as Bitmap;

            原图添加水印(Bmp, 水印图像, 水印方位, 水平边距, 垂直边距);
            return(Bmp);
        }
Beispiel #2
0
        /// <summary>
        /// 为原图添加水印
        /// </summary>
        /// <param name="图像">源图像</param>
        /// <param name="水印图像">水印图像</param>
        /// <param name="水印方位">相对于源图像的方位,在不冲突的情况下可复选,比如“水印方位.右|水印方位.下”</param>
        /// <param name="水平边距">左侧或右侧的边距</param>
        /// <param name="垂直边距">上方或下方的边距</param>
        /// <returns>添加了水印的图片</returns>
        public static void 原图添加水印(this Image 图像, Image 水印图像, 对齐方位 水印方位, int 水平边距, int 垂直边距)
        {
            Graphics g = Graphics.FromImage(图像);
            var      x = 图像.Width / 2 - 水印图像.Width / 2;
            var      y = 图像.Height / 2 - 水印图像.Height / 2;

            if ((水印方位 & 对齐方位.) > 0)
            {
                y = 0 + 垂直边距;
            }
            if ((水印方位 & 对齐方位.) > 0)
            {
                y = 图像.Height - 水印图像.Height - 垂直边距;
            }
            if ((水印方位 & 对齐方位.左) > 0)
            {
                x = 0 + 水平边距;
            }
            if ((水印方位 & 对齐方位.右) > 0)
            {
                x = 图像.Width - 水印图像.Width - 水平边距;
            }
            g.DrawImage(水印图像, new Rectangle(x, y, 水印图像.Width, 水印图像.Height), 0, 0, 水印图像.Width, 水印图像.Height, GraphicsUnit.Pixel);
            g.Dispose();
        }
Beispiel #3
0
        /// <summary>
        /// 放大或缩小画布
        /// </summary>
        /// <param name="图像">图像</param>
        /// <param name="新画布宽度">新画布宽度</param>
        /// <param name="新画布高度">新画布高度</param>
        /// <param name="对齐方位">原图在新画布中的对齐方位</param>
        /// <returns>放大或缩小画布后的图像</returns>
        public static BitmapSource 缩放画布(this BitmapSource 图像, int 新画布宽度, int 新画布高度, 对齐方位 对齐方位)
        {
            DrawingVisual dv = new DrawingVisual();

            using (var dc = dv.RenderOpen())
            {
            }
            RenderTargetBitmap rtb = new RenderTargetBitmap(新画布宽度, 新画布高度, 96, 96, PixelFormats.Pbgra32);

            rtb.Render(dv);
            return(rtb.添加水印(图像, 对齐方位, 0, 0, 1));
        }
Beispiel #4
0
 /// <summary>
 /// 为图像添加水印,并生成新的图像
 /// </summary>
 /// <param name="图像">源图像</param>
 /// <param name="水印图像文件路径">水印图像文件路径</param>
 /// <param name="水印方位">相对于源图像的方位,在不冲突的情况下可复选,比如“水印方位.右|水印方位.下”</param>
 /// <param name="水平边距">左侧或右侧的边距</param>
 /// <param name="垂直边距">上方或下方的边距</param>
 /// <returns>添加了水印的图片</returns>
 public static Bitmap 添加水印(this Image 图像, string 水印图像文件路径, 对齐方位 水印方位, int 水平边距, int 垂直边距)
 {
     return(添加水印(图像, 读取图像自文件(水印图像文件路径), 水印方位, 水平边距, 垂直边距));
 }
Beispiel #5
0
 /// <summary>
 /// 放大或缩小画布
 /// </summary>
 /// <param name="图像">图像</param>
 /// <param name="新画布宽度">新画布宽度</param>
 /// <param name="新画布高度">新画布高度</param>
 /// <param name="对齐方位">原图在新画布中的对齐方位</param>
 /// <returns>放大或缩小画布后的图像</returns>
 public static BitmapSource 缩放画布(this BitmapSource 图像, int 新画布宽度, int 新画布高度, 对齐方位 对齐方位)
 {
     DrawingVisual dv = new DrawingVisual();
     using (var dc = dv.RenderOpen())
     {
         
     }
     RenderTargetBitmap rtb = new RenderTargetBitmap(新画布宽度, 新画布高度, 96, 96, PixelFormats.Pbgra32);
     rtb.Render(dv);
     return rtb.添加水印(图像, 对齐方位, 0, 0,1);
 }
Beispiel #6
0
 /// <summary>
 /// 为图像添加水印,并生成为新的图像
 /// </summary>
 /// <param name="图像">源图像</param>
 /// <param name="水印图像">水印图像</param>
 /// <param name="水印方位">相对于源图像的方位,在不冲突的情况下可复选,比如“水印方位.右|水印方位.下”</param>
 /// <param name="水平边距">左侧或右侧的边距</param>
 /// <param name="垂直边距">上方或下方的边距</param>
 /// <returns>添加了水印的图片</returns>
 public static RenderTargetBitmap 添加水印(this BitmapSource 图像, BitmapSource 水印图像, 对齐方位 水印方位, int 水平边距, int 垂直边距, double 不透明度)
 {
     var x = 图像.PixelWidth / 2 - 水印图像.PixelWidth / 2;
     var y = 图像.PixelHeight / 2 - 水印图像.PixelHeight / 2;
     if ((水印方位 & 对齐方位.上) > 0)
     {
         y = 0 + 垂直边距;
     }
     if ((水印方位 & 对齐方位.下) > 0)
     {
         y = 图像.PixelHeight - 水印图像.PixelHeight - 垂直边距;
     }
     if ((水印方位 & 对齐方位.左) > 0)
     {
         x = 0 + 水平边距;
     }
     if ((水印方位 & 对齐方位.右) > 0)
     {
         x = 图像.PixelWidth - 水印图像.PixelWidth - 水平边距;
     }
     return 添加覆盖图像(图像, 水印图像, x, y, 不透明度);
 }
Beispiel #7
0
        /// <summary>
        /// 为图像添加水印,并生成为新的图像
        /// </summary>
        /// <param name="图像">源图像</param>
        /// <param name="水印图像">水印图像</param>
        /// <param name="水印方位">相对于源图像的方位,在不冲突的情况下可复选,比如“水印方位.右|水印方位.下”</param>
        /// <param name="水平边距">左侧或右侧的边距</param>
        /// <param name="垂直边距">上方或下方的边距</param>
        /// <returns>添加了水印的图片</returns>
        public static RenderTargetBitmap 添加水印(this BitmapSource 图像, BitmapSource 水印图像, 对齐方位 水印方位, int 水平边距, int 垂直边距, double 透明度)
        {
            var x = 图像.PixelWidth / 2 - 水印图像.PixelWidth / 2;
            var y = 图像.PixelHeight / 2 - 水印图像.PixelHeight / 2;

            if ((水印方位 & 对齐方位.) > 0)
            {
                y = 0 + 垂直边距;
            }
            if ((水印方位 & 对齐方位.) > 0)
            {
                y = 图像.PixelHeight - 水印图像.PixelHeight - 垂直边距;
            }
            if ((水印方位 & 对齐方位.左) > 0)
            {
                x = 0 + 水平边距;
            }
            if ((水印方位 & 对齐方位.右) > 0)
            {
                x = 图像.PixelWidth - 水印图像.PixelWidth - 水平边距;
            }
            return(添加覆盖图像(图像, 水印图像, x, y, 透明度));
        }