为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C#图片加文字、图片水印

2017-09-27 23页 doc 57KB 154阅读

用户头像

is_654168

暂无简介

举报
C#图片加文字、图片水印C#图片加文字、图片水印 using,System;,,,, using,System.Drawing;,,,, using,System.Drawing.Imaging;,,,,using,System.Drawing.Drawing2D;,,,,using,System.IO;,,,, ///,,,,, ,,,,///,图片位置 ///,,,,, public,enum,ImagePosition,,,,{,,,, ,,,,LeftTop,,,,,,,,,//左上,,,, ,,,,LeftBottom,,,,,//左下,...
C#图片加文字、图片水印
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,Gong,From,Demetersoft.com,,,, ///,,,,, public,class,WaterImageManage,,,,{,,,, ,,,,///,,,,, ,,,,///,生成一个新的水印图片制作实例,,,, ,,,,///,,,,, ,,,,public,WaterImageManage,(),,,,,,,,{,,,, ,,,,,,,,//,,,, ,,,,,,,,//,TODO:,Add,constructor,logic,here,,,, ,,,,,,,,//,,,, ,,,,},,,, ,,,, ,,,,///,,,,, ,,,,///,添加图片水印,,,, ,,,,///,,,,, ,,,,///,源图片文件名,,,,,,,,///,水印图片文件名,,,,,,,,///,透明度(0.1-1.0数值越小透明度越高),,,, ,,,,///,位置,,,,,,,,///,图片的路径,,,,,,,,///,返回生成于指定文件夹下的水印文件名,,,,,,,,public,string,,DrawImage(string,sourcePicture,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,string,waterImage,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,float,alpha,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ImagePosition,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,+,waterImage;,,,,,,,,,,,,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),==,false,||(,,,,,,,,,,,,,,,,fileSourceExtension,!=,".gif",&&,,,, ,,,,,,,,,,,,fileSourceExtension,!=,".jpg",&&,,,, ,,,,,,,,,,,,fileSourceExtension,!=,".png"),||,(,,,,,,,,,,,,,,,,fileWaterExtension,!=,".gif",&&,,,, ,,,,,,,,,,,,fileWaterExtension,!=,".jpg",&&,,,, ,,,,,,,,,,,,fileWaterExtension,!=,".png"),,,, ,,,,,,,,,,,,),,,, ,,,,,,,,{,,,, ,,,,,,,,,,,,return,sourcePicture;,,,, ,,,,,,,,},,,, ,,,, ,,,,,,,,//,,,, ,,,,,,,,//,目标图片名称及全路径,,,, ,,,,,,,,//,,,, ,,,,,,,,string,targetImage,=,sourcePictureName.Replace,(,System.IO.Path.GetExtension(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.Format24bppRgb);,,,, ,,,, ,,,,,,,,//,,,, ,,,,,,,,//,设定分辨率,,,, ,,,,,,,,//,,,,, ,,,,,,,,bmPhoto.SetResolution(imgPhoto.HorizontalResolution,, imgPhoto.VerticalResolution);,,,, ,,,, ,,,,,,,,//,,,, ,,,,,,,,//,定义一个绘图画面用来装载位图,,,, ,,,,,,,,//,,,, ,,,,,,,,Graphics,grPhoto,=,Graphics.FromImage(bmPhoto);,,,, ,,,, ,,,,,,,,//,,,, ,,,,,,,,//同样,由于水印是图片,我们也需要定义一个Image来装载它,,,,,,,,,,,,//,,,, ,,,,,,,,Image,imgWatermark,=,new,Bitmap(waterPictureName);,,,, ,,,,,,,,,,,, ,,,,,,,,//,,,, ,,,,,,,,//,获取水印图片的高度和宽度,,,, ,,,,,,,,//,,,, ,,,,,,,,int,wmWidth,=,imgWatermark.Width;,,,,,,,,,,,,int,wmHeight,=,imgWatermark.Height;,,,,,,,, ,,,,,,,,//SmoothingMode:指定是否将平滑处理(消除锯齿)应用于直线、曲线和已填充区域的边缘。,,,, ,,,,,,,,//,成员名称,,,,,,,, ,,,,,,,,//,AntiAlias,,,,,,指定消除锯齿的呈现。,,,,,, ,,,,,,,,//,Default,,,,,,,,指定不消除锯齿。,,,,,, ,,,,,,,,//,HighQuality,,指定高质量、低速度呈现。,,,,,, ,,,,,,,,//,HighSpeed,,,指定高速度、低质量呈现。,,,,,, ,,,,,,,,//,Invalid,,,,,,,,指定一个无效模式。,,,,,, ,,,,,,,,//,None,,,,,,,,,,指定不消除锯齿。,,,,, ,,,,,,,,grPhoto.SmoothingMode,=,SmoothingMode.AntiAlias;,,,,,,,, ,,,,,,,,//,,,, ,,,,,,,,//,第一次描绘,将我们的底图描绘在绘图画面上,,,, ,,,,,,,,//,,,, ,,,,,,,,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);,,,, ,,,,,,,,,,,, ,,,,,,,,//,,,, ,,,,,,,,//,继续,将水印图片装载到一个绘图画面grWatermark,,,, ,,,,,,,,//,,,, ,,,,,,,,Graphics,grWatermark,=,Graphics.FromImage(bmWatermark);,,,, ,,,, ,,,,,,,,//,,,, ,,,,,,,,//ImageAttributes,对象包含有关在呈现时如何操作位图和图元文件颜 色的信息。,,,, ,,,,,,,,//,,,,,,,,,,, ,,,,,,,,ImageAttributes,imageAttributes,=,new,ImageAttributes();,,,, ,,,, ,,,,,,,,//,,,, ,,,,,,,,//Colormap:,定义转换颜色的映射,,,, ,,,,,,,,//,,,, ,,,,,,,,ColorMap,colorMap,=,new,ColorMap();,,,,,,,, ,,,,,,,,//,,,, ,,,,,,,,//我的水印图被定义成拥有绿色背景色的图片被替换成透明,,,, ,,,,,,,,//,,,, ,,,,,,,,colorMap.OldColor,=,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},,//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);,,,, ,,,, ,,,, ,,,,,,,,imageAttributes.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,:,,,,,,,,,,,,,,,,,,,,xPosOfWm,=,(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,-,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;,,,, ,,,,,,,,},,,, ,,,, ,,,,,,,,//,,,, ,,,,,,,,//,第二次绘图,把水印印上去,,,, ,,,,,,,,//,,,, ,,,,,,,,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.Jpeg);,,,,,,,,,,,,imgPhoto.Dispose();,,,, ,,,,,,,,imgWatermark.Dispose();,,,, ,,,,,,,,return,targetImage.Replace,(PicturePath,"");,,,,,,,,},,,, ,,,, ,,,,///,,,,, ,,,,///,在图片上添加水印文字,,,, ,,,,///,,,,, ,,,,///,源图片文件,,,, ,,,,///,需要添加到图片上的文字,,,, ,,,,///,透明度,,,, ,,,,///,位置,,,, ,,,,///,文件路径,,,, ,,,,///,,,,, ,,,,public,string,DrawWords(string,sourcePicture,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,string,waterWords,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,float,alpha,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ImagePosition,position,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,string,PicturePath),,,,,,,,{,,,, ,,,,,,,,//,,,, ,,,,,,,,//,判断参数是否有效,,,, ,,,,,,,,//,,,, ,,,,,,,,if,(sourcePicture,==,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.IO.File.Exists(sourcePictureName),==,false,||,(,,,, ,,,,,,,,,,,,fileExtension,!=,".gif",,&&,,,, ,,,,,,,,,,,,fileExtension,!=,".jpg",&&,,,, ,,,,,,,,,,,,fileExtension,!=,".png",)),,,,,,,,,,,,{,,,, ,,,,,,,,,,,,return,sourcePicture;,,,, ,,,,,,,,},,,, ,,,, ,,,,,,,,//,,,, ,,,,,,,,//,目标图片名称及全路径,,,, ,,,,,,,,//,,,, ,,,,,,,,string,targetImage,=, sourcePictureName.Replace(System.IO.Path.GetExtension(sourcePictureNa me),,""),+,"_0703.jpg";,,,, ,,,, ,,,,,,,,//创建一个图片对象用来装载要被添加水印的图片,,,, ,,,,,,,,Image,imgPhoto,=,Image.FromFile(sourcePictureName);,,,, ,,,, ,,,,,,,,//获取图片的宽和高,,,, ,,,,,,,,int,phWidth,=,imgPhoto.Width;,,,,,,,,,,,,int,phHeight,=,imgPhoto.Height;,,,,,,,, ,,,,,,,,//,,,, 建立一个bitmap,和我们需要加水印的图片一样大小,,,,,,,,,,,,// ,,,,,,,,Bitmap,bmPhoto,=,new,Bitmap(phWidth,,phHeight,,PixelFormat.Format24bppRgb);,,,, ,,,, ,,,,,,,,//SetResolution:设置此,Bitmap,的分辨率,,,, ,,,,,,,,//这里直接将我们需要添加水印的图片的分辨率赋给了bitmap,,,, ,,,,,,,,bmPhoto.SetResolution(imgPhoto.HorizontalResolution,, imgPhoto.VerticalResolution);,,,, ,,,, ,,,,,,,,//Graphics:封装一个,GDI+,绘图图面。,,,, ,,,,,,,,Graphics,grPhoto,=,Graphics.FromImage(bmPhoto);,,,, ,,,, ,,,,,,,,//设置图形的品质,,,, ,,,,,,,,grPhoto.SmoothingMode,=,SmoothingMode.AntiAlias;,,,, ,,,, ,,,,,,,,//将我们要添加水印的图片按照原始大小描绘(复制)到图形中,,,, ,,,,,,,,grPhoto.DrawImage(,,,, ,,,,,,,,,imgPhoto,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,//,,,要添 加水印的图片,,,, ,,,,,,,,,new,Rectangle(0,,0,,phWidth,,phHeight),,//,,根据要添加的水印图片 的宽和高,,,, ,,,,,,,,,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,=,new,SizeF();,,,,,,,, ,,,,,,,,//利用一个循环语句来选择我们要添加文字的型号,,,, 直到它的长度比图片的宽度小,,,,,,,,,,,,// ,,,,,,,,for,(int,i,=,0;,i,<,7;,i++),,,,,,,,,,,,{,,,, ,,,,,,,,,,,,crFont,=,new,Font("arial",,sizes[i],,FontStyle.Bold);,,,, ,,,, ,,,,,,,,,,,,//测量用指定的,Font,对象绘制并用指定的,StringFormat,对象格式化的指定字符串。,,,, ,,,,,,,,,,,,crSize,=,grPhoto.MeasureString(waterWords,,crFont);,,,, ,,,, ,,,,,,,,,,,,//,ushort,关键字示一种整数数据类型,,,, ,,,,,,,,,,,,if,((ushort)crSize.Width,<,(ushort)phWidth),,,, ,,,,,,,,,,,,,,,,break;,,,, ,,,,,,,,},,,, ,,,, ,,,,,,,,//截边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-,wmHeight,-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,ImagePosition,.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();,,,,,,,, ,,,,,,,,//定义需要印的文字居中对齐,,,, ,,,,,,,,StrFormat.Alignment,=,StringAlignment.Center;,,,,,,,, ,,,,,,,,//SolidBrush:定义单色画笔。画笔用于填充图形形状,如矩形、椭圆、 扇形、多边形和封闭路径。,,,, ,,,,,,,,//这个画笔为描绘阴影的画笔,呈灰色,,,, ,,,,,,,,int,m_alpha,=,Convert,.ToInt32,(,256,*,alpha);,,,,,,,,,,,,SolidBrush,semiTransBrush2,=,new, SolidBrush(Color.FromArgb(m_alpha,,0,,0,,0));,,,, ,,,, ,,,,,,,,//描绘文字信息,这个图层向右和向下偏移一个像素,表示阴影效果,,,, ,,,,,,,,//DrawString,在指定矩形并且用指定的,Brush,和,Font,对象绘制指 定的文本字符串。,,,, ,,,,,,,,grPhoto.DrawString(waterWords,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,//string,of,text,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,crFont,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, //font,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,semiTransBrush2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,//Brush,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,new,PointF(xPosOfWm,+,1,,yPosOfWm,+,1),,,//Position,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,StrFormat);,,,, ,,,, ,,,,,,,,//从四个,ARGB,分量(alpha、红色、绿色和蓝色)值创建,Color,结 构,这里设置透明度为153,,,, ,,,,,,,,//这个画笔为描绘正式文字的笔刷,呈白色,,,, ,,,,,,,,SolidBrush,semiTransBrush,=,new,SolidBrush(Color.FromArgb(153,,255,,255,,255));,,,, ,,,, ,,,,,,,,//第二次绘制这个图形,建立在第一次描绘的基础上,,,, ,,,,,,,,grPhoto.DrawString(waterWords,,,,,,,,,,,,,,,,,,//string,of,text,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,crFont,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,//font,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,semiTransBrush,,,,,,,,,,,,,,,,,,,,,,,,,,,,//Brush,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,new,PointF(xPosOfWm,,yPosOfWm),,,//Position,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,StrFormat);,,,, ,,,, ,,,,,,,,//imgPhoto是我们建立的用来装载最终图形的Image对象,,,, ,,,,,,,,//bmPhoto是我们用来制作图形的容器,为Bitmap对象,,,, ,,,,,,,,imgPhoto,=,bmPhoto;,,,, ,,,,,,,,//释放资源,将定义的Graphics实例grPhoto释放,grPhoto功德圆满,,,, ,,,,,,,,grPhoto.Dispose();,,,, ,,,, ,,,,,,,,//将grPhoto保存,,,, ,,,,,,,,imgPhoto.Save(targetImage,,ImageFormat.Jpeg);,,,, ,,,,,,,,imgPhoto.Dispose();,,,,,,,, ,,,,,,,,return,targetImage.Replace(PicturePath,,"");,,,, ,,,,},,,, },,,, ,,,, ///,,,,, ///,装载水印图片的相关信息,,,, ///,,,,, public,class,WaterImage,,,, {,,,, ,,,,public,WaterImage,(),,,, ,,,,{,,,, ,,,, ,,,,},,,, ,,,, ,,,,private,string,m_sourcePicture;,,,,,,,,///,,,,, ,,,,///,源图片地址名字(带后缀),,,, ,,,,///,,,,, ,,,,public,string,SourcePicture,,,,,,,,{,,,, ,,,,,,,,get,{,return,m_sourcePicture;,},,,,,,,,,,,,set,{,m_sourcePicture,=,value;,},,,, ,,,,},,,, ,,,, ,,,,private,string,,m_waterImager;,,,,,,,,///,,,,, ,,,,///,水印图片名字(带后缀),,,, ,,,,///,,,,, ,,,,public,string,,WaterPicture,,,,,,,,{,,,, ,,,,,,,,get,{,return,m_waterImager;,},,,,,,,,,,,,set,{,m_waterImager,=,value;,},,,,,,,,},,,, ,,,, ,,,,private,float,,m_alpha;,,,,,,,,///,,,,, ,,,,///,水印图片文字的透明度,,,, ,,,,///,,,,, ,,,,public,float,,Alpha,,,, ,,,,{,,,, ,,,,,,,,get,{,return,m_alpha;,},,,,,,,,,,,,set,{,m_alpha,=,value;,},,,, ,,,,},,,, ,,,, ,,,,private,ImagePosition,,m_postition;,,,,,,,,///,,,,, ,,,,///,水印图片或文字在图片中的位置,,,, ,,,,///,,,,, ,,,,public,ImagePosition,,Position,,,,,,,,{,,,, ,,,,,,,,get,{,return,m_postition;,},,,,,,,,,,,,set,{,m_postition,=,value;,},,,,,,,,},,,, ,,,, ,,,,private,string,,m_words;,,,,,,,,///,,,,, ,,,,///,水印文字的内容,,,, ,,,,///,,,,, ,,,,public,string,,Words,,,, ,,,,{,,,, ,,,,,,,,get,{,return,m_words;,},,,,,,,,,,,,set,{,m_words,=,value;,},,,,,,,,},,,, ,,,,,,,,, },,
/
本文档为【C#图片加文字、图片水印】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索