ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:20.17KB ,
资源ID:23897210      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23897210.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#图片加文字图片水印.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C#图片加文字图片水印.docx

1、C#图片加文字图片水印using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.IO; / / 图片位置 / public enum ImagePosition LeftTop, /左上 LeftBottom, /左下 RightTop, /右上 RigthBottom, /右下 TopMiddle, /顶部居中 BottomMiddle, /底部居中 Center /中心 / / 水印图片的操作管理 Design by Gary

2、Gong From D / public class WaterImageManage / / 生成一个新的水印图片制作实例 / public WaterImageManage () / / TODO: Add constructor logic here / / / 添加图片水印 / / 源图片文件名 / 水印图片文件名 / 透明度(0.1-1.0数值越小透明度越高) / 位置 / 图片的路径 / 返回生成于指定文件夹下的水印文件名 public string DrawImage(string sourcePicture, string waterImage, float alpha, Im

3、agePosition position, string PicturePath ) / / 判断参数是否有效 / if (sourcePicture = string.Empty | waterImage = string.Empty | alpha = 0.0 | PicturePath = string.Empty) return sourcePicture; / / 源图片,水印图片全路径 / string sourcePictureName = PicturePath + sourcePicture; string waterPictureName = PicturePath + w

4、aterImage; string fileSourceExtension = System.IO.Path.GetExtension(sourcePictureName).ToLower(); string fileWaterExtension = System.IO.Path.GetExtension(waterPictureName).ToLower(); / / 判断文件是否存在,以及类型是否正确 / if (System.IO.File.Exists(sourcePictureName) = false | System.IO.File.Exists(waterPictureName

5、) = false |( fileSourceExtension != .gif & fileSourceExtension != .jpg & fileSourceExtension != .png) | ( fileWaterExtension != .gif & fileWaterExtension != .jpg & fileWaterExtension != .png) ) return sourcePicture; / / 目标图片名称及全路径 / string targetImage = sourcePictureName.Replace ( System.IO.Path.Get

6、Extension(sourcePictureName),) + _1101.jpg; / / 将需要加上水印的图片装载到Image对象中 / Image imgPhoto = Image.FromFile(sourcePictureName); / / 确定其长宽 / int phWidth = imgPhoto.Width; int phHeight = imgPhoto.Height; / / 封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成。 / Bitmap bmPhoto = new Bitmap(phWidth, phHeight, PixelFormat.Forma

7、t24bppRgb); / / 设定分辨率 / bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution); / / 定义一个绘图画面用来装载位图 / Graphics grPhoto = Graphics.FromImage(bmPhoto); / /同样,由于水印是图片,我们也需要定义一个Image来装载它 / Image imgWatermark = new Bitmap(waterPictureName); / / 获取水印图片的高度和宽度 / int wmWidth = imgWa

8、termark.Width; int wmHeight = imgWatermark.Height; /SmoothingMode:指定是否将平滑处理(消除锯齿)应用于直线、曲线和已填充区域的边缘。 / 成员名称 说明 / AntiAlias 指定消除锯齿的呈现。 / Default 指定不消除锯齿。 / HighQuality 指定高质量、低速度呈现。 / HighSpeed 指定高速度、低质量呈现。 / Invalid 指定一个无效模式。 / None 指定不消除锯齿。 grPhoto.SmoothingMode = SmoothingMode.AntiAlias; / / 第一次描绘,将

9、我们的底图描绘在绘图画面上 / grPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, phWidth, phHeight), 0, 0, phWidth, phHeight, GraphicsUnit.Pixel); / / 与底图一样,我们需要一个位图来装载水印图片。并设定其分辨率 / Bitmap bmWatermark = new Bitmap(bmPhoto); bmWatermark.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution); / / 继

10、续,将水印图片装载到一个绘图画面grWatermark / Graphics grWatermark = Graphics.FromImage(bmWatermark); / /ImageAttributes 对象包含有关在呈现时如何操作位图和图元文件颜色的信息。 / ImageAttributes imageAttributes = new ImageAttributes(); / /Colormap: 定义转换颜色的映射 / ColorMap colorMap = new ColorMap(); / /我的水印图被定义成拥有绿色背景色的图片被替换成透明 / colorMap.OldColo

11、r = Color.FromArgb(255, 0, 255, 0); colorMap.NewColor = Color.FromArgb(0, 0, 0, 0); ColorMap remapTable = colorMap ; imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap); float colorMatrixElements = new float 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, / red红色 new float 0.0f, 1.0f, 0.0f, 0.0f, 0.0f,

12、/green绿色 new float 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, /blue蓝色 new float 0.0f, 0.0f, 0.0f, alpha, 0.0f, /透明度 new float 0.0f, 0.0f, 0.0f, 0.0f, 1.0f;/ / ColorMatrix:定义包含 RGBA 空间坐标的 5 x 5 矩阵。 / ImageAttributes 类的若干方法通过使用颜色矩阵调整图像颜色。 ColorMatrix wmColorMatrix = new ColorMatrix(colorMatrixElements); imageAttri

13、butes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); / /上面设置完颜色,下面开始设置位置 / int xPosOfWm; int yPosOfWm; switch (position) case ImagePosition .BottomMiddle : xPosOfWm = (phWidth-wmWidth ) / 2 ; yPosOfWm = phHeight- wmHeight -10; break ; case ImagePosition .Center : xPo

14、sOfWm = (phWidth - wmWidth) / 2; yPosOfWm = (phHeight-wmHeight ) / 2; break ; case ImagePosition .LeftBottom : xPosOfWm = 10; yPosOfWm = phHeight - wmHeight - 10; break ; case ImagePosition .LeftTop : xPosOfWm = 10; yPosOfWm = 10; break; case ImagePosition .RightTop : xPosOfWm = phWidth - wmWidth -

15、10; yPosOfWm = 10; break ; case ImagePosition .RigthBottom : xPosOfWm = phWidth - wmWidth - 10; yPosOfWm = phHeight - wmHeight - 10; break ; case ImagePosition.TopMiddle : xPosOfWm = (phWidth - wmWidth) / 2; yPosOfWm = 10; break ; default: xPosOfWm = 10; yPosOfWm = phHeight - wmHeight - 10; break; /

16、 / 第二次绘图,把水印印上去 / grWatermark.DrawImage(imgWatermark, new Rectangle(xPosOfWm, yPosOfWm, wmWidth, wmHeight), 0, 0, wmWidth, wmHeight, GraphicsUnit.Pixel, imageAttributes); imgPhoto = bmWatermark; grPhoto.Dispose(); grWatermark.Dispose(); / / 保存文件到服务器的文件夹里面 / imgPhoto.Save(targetImage, ImageFormat.Jpe

17、g); imgPhoto.Dispose(); imgWatermark.Dispose(); return targetImage.Replace (PicturePath,); / / 在图片上添加水印文字 / / 源图片文件 / 需要添加到图片上的文字 / 透明度 / 位置 / 文件路径 / public string DrawWords(string sourcePicture, string waterWords, float alpha, ImagePosition position, string PicturePath) / / 判断参数是否有效 / if (sourcePic

18、ture = string.Empty | waterWords = string.Empty | alpha = 0.0 | PicturePath = string.Empty) return sourcePicture; / / 源图片全路径 / string sourcePictureName = PicturePath + sourcePicture; string fileExtension = System.IO.Path.GetExtension(sourcePictureName).ToLower(); / / 判断文件是否存在,以及文件名是否正确 / if (System.

19、IO.File.Exists(sourcePictureName) = false | ( fileExtension != .gif & fileExtension != .jpg & fileExtension != .png ) return sourcePicture; / / 目标图片名称及全路径 / string targetImage = sourcePictureName.Replace(System.IO.Path.GetExtension(sourcePictureName), ) + _0703.jpg; /创建一个图片对象用来装载要被添加水印的图片 Image imgP

20、hoto = Image.FromFile(sourcePictureName); /获取图片的宽和高 int phWidth = imgPhoto.Width; int phHeight = imgPhoto.Height; / /建立一个bitmap,和我们需要加水印的图片一样大小 Bitmap bmPhoto = new Bitmap(phWidth, phHeight, PixelFormat.Format24bppRgb); /SetResolution:设置此 Bitmap 的分辨率 /这里直接将我们需要添加水印的图片的分辨率赋给了bitmap bmPhoto.SetResolut

21、ion(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution); /Graphics:封装一个 GDI+ 绘图图面。 Graphics grPhoto = Graphics.FromImage(bmPhoto); /设置图形的品质 grPhoto.SmoothingMode = SmoothingMode.AntiAlias; /将我们要添加水印的图片按照原始大小描绘(复制)到图形中 grPhoto.DrawImage( imgPhoto, / 要添加水印的图片 new Rectangle(0, 0, phWidth, phHei

22、ght), / 根据要添加的水印图片的宽和高 0, / X方向从0点开始描绘 0, / Y方向 phWidth, / X方向描绘长度 phHeight, / Y方向描绘长度 GraphicsUnit.Pixel); / 描绘的单位,这里用的是像素 /根据图片的大小我们来确定添加上去的文字的大小 /在这里我们定义一个数组来确定 int sizes = new int 16, 14, 12, 10, 8, 6, 4 ; /字体 Font crFont = null; /矩形的宽度和高度,SizeF有三个属性,分别为Height高,width宽,IsEmpty是否为空 SizeF crSize =

23、new SizeF(); /利用一个循环语句来选择我们要添加文字的型号 /直到它的长度比图片的宽度小 for (int i = 0; i 7; i+) crFont = new Font(arial, sizesi, FontStyle.Bold); /测量用指定的 Font 对象绘制并用指定的 StringFormat 对象格式化的指定字符串。 crSize = grPhoto.MeasureString(waterWords, crFont); / ushort 关键字表示一种整数数据类型 if (ushort)crSize.Width (ushort)phWidth) break; /截

24、边5%的距离,定义文字显示(由于不同的图片显示的高和宽不同,所以按百分比截取) int yPixlesFromBottom = (int)(phHeight * .05); /定义在图片上文字的位置 float wmHeight = crSize.Height; float wmWidth = crSize .Width ; float xPosOfWm; float yPosOfWm; switch (position) case ImagePosition .BottomMiddle : xPosOfWm = phWidth / 2 ; yPosOfWm = phHeight- wmHei

25、ght -10; break ; case ImagePosition .Center : xPosOfWm = phWidth / 2; yPosOfWm = phHeight / 2; break ; case ImagePosition .LeftBottom : xPosOfWm = wmWidth; yPosOfWm = phHeight - wmHeight - 10; break ; case ImagePosition .LeftTop : xPosOfWm = wmWidth/2 ; yPosOfWm = wmHeight / 2; break; case ImagePosi

26、tion .RightTop : xPosOfWm = phWidth - wmWidth - 10; yPosOfWm = wmHeight; break ; case ImagePosition .RigthBottom : xPosOfWm = phWidth - wmWidth - 10; yPosOfWm = phHeight - wmHeight - 10; break ; case ImagePosition.TopMiddle : xPosOfWm = phWidth / 2; yPosOfWm = wmWidth; break ; default: xPosOfWm = wmWidth; yPosOfWm = phHeight - wmHeight - 10; break; /封装文本布局信息(如对齐、文字方向和 Tab 停靠位),显示操作(如省略号插入和国家标准 (National) 数字替换)和 OpenType 功能。 StringFormat StrFormat = new StringFormat(); /定义需要印的文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1