#region 添加水印
/// <summary>
/// 添加文字水印
/// </summary>
/// <param name="image"></param>
/// <param name="text"></param>
/// <param name="fontSize">字体大小</param>
/// <param name="rectX">水印开始X坐标(自动扣除文字宽度)</param>
/// <param name="rectY">水印开始Y坐标(自动扣除文字高度</param>
/// <param name="opacity">0-255 值越大透明度越低</param>
/// <param name="externName">文件后缀名</param>
/// <returns></returns>
public static Image AddTextToImg(Image image, string text, float fontSize, float rectX, float rectY, int opacity, string externName)
{ Bitmap bitmap = new Bitmap(image, image.Width, image.Height); Graphics g = Graphics.FromImage(bitmap); //下面定义一个矩形区域
float rectWidth = text.Length * (fontSize + );
float rectHeight = fontSize + ; //声明矩形域 RectangleF textArea = new RectangleF(rectX - rectWidth, rectY - rectHeight, rectWidth, rectHeight); Font font = new Font("微软雅黑", fontSize, FontStyle.Bold); //定义字体 Brush whiteBrush = new SolidBrush(Color.FromArgb(opacity, , , )); //画文字用 g.DrawString(text, font, whiteBrush, textArea); MemoryStream ms = new MemoryStream(); //保存图片
switch (externName)
{
case ".jpg":
bitmap.Save(ms, ImageFormat.Jpeg);
break;
case ".gif":
bitmap.Save(ms, ImageFormat.Gif);
break;
case ".png":
bitmap.Save(ms, ImageFormat.Png);
break;
default:
bitmap.Save(ms, ImageFormat.Jpeg);
break;
} Image h_hovercImg = Image.FromStream(ms); g.Dispose(); bitmap.Dispose(); return h_hovercImg; } /// <summary>
/// 添加图片水印
/// </summary>
/// <param name="image"></param>
/// <param name="text"></param>
/// <param name="rectX">水印开始X坐标(自动扣除图片宽度)</param>
/// <param name="rectY">水印开始Y坐标(自动扣除图片高度</param>
/// <param name="opacity">透明度 0-1</param>
/// <param name="externName">文件后缀名</param>
/// <returns></returns>
public static Image AddImgToImg(Image image, Image watermark, float rectX, float rectY, float opacity, string externName)
{ Bitmap bitmap = new Bitmap(image, image.Width, image.Height); Graphics g = Graphics.FromImage(bitmap); //下面定义一个矩形区域
float rectWidth = watermark.Width + ;
float rectHeight = watermark.Height + ; //声明矩形域
RectangleF textArea = new RectangleF(rectX - rectWidth, rectY - rectHeight, rectWidth, rectHeight); Bitmap w_bitmap = ChangeOpacity(watermark, opacity); g.DrawImage(w_bitmap, textArea); MemoryStream ms = new MemoryStream(); //保存图片
switch (externName)
{
case ".jpg":
bitmap.Save(ms, ImageFormat.Jpeg);
break;
case ".gif":
bitmap.Save(ms, ImageFormat.Gif);
break;
case ".png":
bitmap.Save(ms, ImageFormat.Png);
break;
default:
bitmap.Save(ms, ImageFormat.Jpeg);
break;
} Image h_hovercImg = Image.FromStream(ms); g.Dispose(); bitmap.Dispose();
return h_hovercImg; } /// <summary>
/// 改变图片的透明度
/// </summary>
/// <param name="img">图片</param>
/// <param name="opacityvalue">透明度</param>
/// <returns></returns>
public static Bitmap ChangeOpacity(Image img, float opacityvalue)
{ float[][] nArray ={ new float[] {, , , , }, new float[] {, , , , }, new float[] {, , , , }, new float[] {, , , opacityvalue, }, new float[] {, , , , }}; ColorMatrix matrix = new ColorMatrix(nArray); ImageAttributes attributes = new ImageAttributes(); attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); Image srcImage = img; Bitmap resultImage = new Bitmap(srcImage.Width, srcImage.Height); Graphics g = Graphics.FromImage(resultImage); g.DrawImage(srcImage, new Rectangle(, , srcImage.Width, srcImage.Height), , , srcImage.Width, srcImage.Height, GraphicsUnit.Pixel, attributes); return resultImage;
} #endregion
Image img = Image.FromStream(file.InputStream);
string externName = Path.GetExtension(file.FileName); //添加文字水印
System.Drawing.Image t_img = Upload.AddTextToImg(img, "我是水印",14.0f, img.Width - , img.Height - , , externName); //添加图片水印
Image watermark =
Image.FromFile(Server.MapPath("/content/images/common/logo_main.png"));//水印图片
System.Drawing.Image t2_img = Upload.AddImgToImg(img, watermark, img.Width - , img.Height - , 0.5f, externName);

C# 给图片添加透明的文字、图片水印的更多相关文章

  1. Windows操作 - Photoshop为图片添加透明立体水印

    原文地址:http://design.yesky.com/photoshop/252/2427752.shtml 本文我们介绍用Photoshop为图片添加透明立体水印的方法和技巧. 原图: 打开原图 ...

  2. C#一些常用的图片操作方法:生成文字图片 合并图片等

    生成文字图片: /// <summary> /// 生成文字图片 /// </summary> /// <param name="text">& ...

  3. 如何在github中插入图片,链接,图片链接(给图片加上链接),文字+图片链接,的实战分享!

    如何在github中插入图片,链接,图片链接(给图片加上链接),文字+图片链接,的实战分享! markdown 1.文字链接: [link-Text](link-URL) [home](https:/ ...

  4. ie6下:png图片不透明 和 背景图片为png的节点的内部标签单击事件不响应

    1.png图片不透明 少量图片时:使用滤镜: _background:none; _filter:prodig:DXImageTransform.Microsoft.AlphaImageLoader( ...

  5. 关于IOS某图片添加控件,图片从相册或拍照保存后,再次进入时点击放大图无法显示的问题

    某图片添加控件: https://github.com/XZTLLQ/LQPhotoPickerDemo 问题: 标题已说明 代码块: NSArray *alAssetUrl =(NSMutableA ...

  6. Flexslider图片轮播、文字图片相结合滑动切换效果

    Flexslider是一款基于的jQuery内容滚动插件.它能让你轻松的创建内容滚动的效果,具有非常高的可定制性.开发者可以使用Flexslider轻松创建各种图片轮播效果.焦点图效果.图文混排滚动效 ...

  7. Flexslider插件实现图片轮播、文字图片相结合滑动切换效果

    插件下载: 点击下载 密码: fbeg Flexslider具有以下特性: 支持滑动和淡入淡出效果. 支持水平.垂直方向滑动. 支持键盘方向键控制. 支持触控滑动. 支持图文混排,支持各种html元素 ...

  8. 图片添加border 不占用图片的大小

    因为设计稿中的分割线大多分为两种情况:1.在图片右侧:2.在图片右侧+下方. 那么使用伪类before和after以及绝对定位很容易在不改变原布局的情况使图片按照设计稿输出和保留分割线. 例div.i ...

  9. PS添加透明立体水印

    PS: CS2 本文我们介绍用Photoshop为图片添加透明立体水印的方法和技巧. 原图: Duplicate Layer,并输入文字: 设置Layer->Layer Style->Be ...

随机推荐

  1. DM8127-UART驱动

    一.重要文件 1./arch/arm/plat-omap/include/plat/omap-serial.h    ##串口名称 1)宏定义#define OMAP_MAX_HSUART_PORTS ...

  2. 七 Kafka Streams VS Consumer API

    1 kafka Streams:   概念: 处理和分析储存在Kafka中的数据,并把处理结果写回Kafka或发送到外部系统的最终输出点,它建立在一些很重要的概念上,比如事件时间和消息时间的准确区分, ...

  3. mybatis 动态sql语句(3)

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...

  4. 阻塞IO(blocking IO)

    在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据.对于n ...

  5. call()和apply()的认知

    apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.  Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 arg ...

  6. IDEA实用的第三方插件和工具介绍设置

    一:grep console grep-console插件可以让idea显示多颜色调试日志,使Log4j配置输出的不同级别error warn info debug fatal显示不同颜色 开发起来区 ...

  7. VMWARE三种网络配置

    由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations ...

  8. Java两种延时——thread和timer

    在Java中有时候需要使程序暂停一点时间,称为延时.普通延时用Thread.sleep(int)方法,这很简单.它将当前线程挂起指定的毫秒数.如 try { Thread.currentThread( ...

  9. 概览JVM的基本结构和JVM内存结构

    概览JVM的基本结构和JVM的内存结构 这里概要介绍一下JVM在启动后,作为操作系统的一个进程的基本结构,以及从操作系统角度看,JVM如何管理它从操作系统里申请来的内存的,也就是JVM的内存结构或者叫 ...

  10. java三元运算符详解

    最近在带领实习生中遇到很多新手问与三元运算符有关的java题目,多数为代码结果题,少数为应用题.鉴于很多资料上对于java三元运算的讲解过于简单,网上的资料与题目也不是很完善,对于结果答案分析不一,故 ...