asp 图片添加水印
来源:互联网 发布:windows nt 4.0补丁包 编辑:程序博客网 时间:2024/06/08 07:58
#region 增加图片文字水印
/// <summary>
/// 增加图片文字水印
/// </summary>
/// <param name="img">要加水印的原图(System.Drawing)</param>
/// <param name="filename">保存文件的绝对路加文件名文件名</param>
/// <param name="watermarkText">水印文字</param>
/// <param name="watermarkStatus">图片水印位置1=左上 2=中上 3=右上 4=左中 5=中中 6=右中 7=左下 8=右中 9=右下</param>
/// <param name="quality">加水印后的质量0~100,数字越大质量越高</param>
/// <param name="fontname">水印的字体</param>
/// <param name="fontsize">水印的字号</param>
public static void ImageWaterMarkText(Image img, string filename, string watermarkText, int watermarkStatus, int quality, string fontname, int fontsize,Color color)
{
Graphics g = Graphics.FromImage(img);
Font drawFont = new Font(fontname, fontsize, FontStyle.Regular, GraphicsUnit.Pixel);
SizeF crSize;
crSize = g.MeasureString(watermarkText, drawFont);
float xpos = 0;
float ypos = 0;
switch (watermarkStatus)
{
case 1:
xpos = (float)img.Width * (float).01;
ypos = (float)img.Height * (float).01;
break;
case 2:
xpos = ((float)img.Width * (float).50) - (crSize.Width / 2);
ypos = (float)img.Height * (float).01;
break;
case 3:
xpos = ((float)img.Width * (float).99) - crSize.Width;
ypos = (float)img.Height * (float).01;
break;
case 4:
xpos = (float)img.Width * (float).01;
ypos = ((float)img.Height * (float).50) - (crSize.Height / 2);
break;
case 5:
xpos = ((float)img.Width * (float).50) - (crSize.Width / 2);
ypos = ((float)img.Height * (float).50) - (crSize.Height / 2);
break;
case 6:
xpos = ((float)img.Width * (float).99) - crSize.Width;
ypos = ((float)img.Height * (float).50) - (crSize.Height / 2);
break;
case 7:
xpos = (float)img.Width * (float).01;
ypos = ((float)img.Height * (float).99) - crSize.Height;
break;
case 8:
xpos = ((float)img.Width * (float).50) - (crSize.Width / 2);
ypos = ((float)img.Height * (float).99) - crSize.Height;
break;
case 9:
xpos = ((float)img.Width * (float).99) - crSize.Width;
ypos = ((float)img.Height * (float).99) - crSize.Height;
break;
}
//g.DrawString(watermarkText, drawFont, new SolidBrush(Color.White), xpos + 1, ypos + 1);文字阴影
g.DrawString(watermarkText, drawFont, new SolidBrush(color), xpos, ypos);
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo codec in codecs)
{
if (codec.MimeType.IndexOf("jpeg") > -1)
ici = codec;
}
EncoderParameters encoderParams = new EncoderParameters();
long[] qualityParam = new long[1];
if (quality < 0 || quality > 100)
quality = 80;
qualityParam[0] = quality;
EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qualityParam);
encoderParams.Param[0] = encoderParam;
if (ici != null)
img.Save(filename, ici, encoderParams);
else
img.Save(filename);
g.Dispose();
img.Dispose();
}
#endregion
/// <summary>
/// 增加图片文字水印
/// </summary>
/// <param name="img">要加水印的原图(System.Drawing)</param>
/// <param name="filename">保存文件的绝对路加文件名文件名</param>
/// <param name="watermarkText">水印文字</param>
/// <param name="watermarkStatus">图片水印位置1=左上 2=中上 3=右上 4=左中 5=中中 6=右中 7=左下 8=右中 9=右下</param>
/// <param name="quality">加水印后的质量0~100,数字越大质量越高</param>
/// <param name="fontname">水印的字体</param>
/// <param name="fontsize">水印的字号</param>
public static void ImageWaterMarkText(Image img, string filename, string watermarkText, int watermarkStatus, int quality, string fontname, int fontsize,Color color)
{
Graphics g = Graphics.FromImage(img);
Font drawFont = new Font(fontname, fontsize, FontStyle.Regular, GraphicsUnit.Pixel);
SizeF crSize;
crSize = g.MeasureString(watermarkText, drawFont);
float xpos = 0;
float ypos = 0;
switch (watermarkStatus)
{
case 1:
xpos = (float)img.Width * (float).01;
ypos = (float)img.Height * (float).01;
break;
case 2:
xpos = ((float)img.Width * (float).50) - (crSize.Width / 2);
ypos = (float)img.Height * (float).01;
break;
case 3:
xpos = ((float)img.Width * (float).99) - crSize.Width;
ypos = (float)img.Height * (float).01;
break;
case 4:
xpos = (float)img.Width * (float).01;
ypos = ((float)img.Height * (float).50) - (crSize.Height / 2);
break;
case 5:
xpos = ((float)img.Width * (float).50) - (crSize.Width / 2);
ypos = ((float)img.Height * (float).50) - (crSize.Height / 2);
break;
case 6:
xpos = ((float)img.Width * (float).99) - crSize.Width;
ypos = ((float)img.Height * (float).50) - (crSize.Height / 2);
break;
case 7:
xpos = (float)img.Width * (float).01;
ypos = ((float)img.Height * (float).99) - crSize.Height;
break;
case 8:
xpos = ((float)img.Width * (float).50) - (crSize.Width / 2);
ypos = ((float)img.Height * (float).99) - crSize.Height;
break;
case 9:
xpos = ((float)img.Width * (float).99) - crSize.Width;
ypos = ((float)img.Height * (float).99) - crSize.Height;
break;
}
//g.DrawString(watermarkText, drawFont, new SolidBrush(Color.White), xpos + 1, ypos + 1);文字阴影
g.DrawString(watermarkText, drawFont, new SolidBrush(color), xpos, ypos);
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo codec in codecs)
{
if (codec.MimeType.IndexOf("jpeg") > -1)
ici = codec;
}
EncoderParameters encoderParams = new EncoderParameters();
long[] qualityParam = new long[1];
if (quality < 0 || quality > 100)
quality = 80;
qualityParam[0] = quality;
EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qualityParam);
encoderParams.Param[0] = encoderParam;
if (ici != null)
img.Save(filename, ici, encoderParams);
else
img.Save(filename);
g.Dispose();
img.Dispose();
}
#endregion
0 0
- Asp添加图片水印
- asp 图片添加水印
- asp .net 为图片添加图片水印
- asp.net动态添加图片水印
- asp.net为图片添加文字水印
- asp.net 给图片添加水印
- asp.net 给图片添加水印
- ASP.NET Ueditor上传图片添加水印
- asp.net实现图片添加文字及图片水印
- Java添加水印+图片水印+文字水印
- ASP.NET(C#)缩略图片,添加文字水印和图片水印
- asp.net生成缩略图,添加图片水印的类
- ASP.NET 给图片动态添加文字水印
- ASP.NET 给图片动态添加文字水印
- ASP.NET 上传图片添加文字、Logo水印
- ASP中配置Kindeditor上传图片选择添加水印功能
- Asp添加文字水印
- Asp.Net添加水印
- Freeradius证书认证模式配置
- svn利用钩子脚本功能实现代码同步到web目录
- IE8兼容js原生函数问题(举例map,filter,indexof)
- JQuery操作html实现<li>标签上移和下移效果
- 读书笔记--策略模式
- asp 图片添加水印
- swift3 函数方法
- Linux 解压zip,移动文件
- IDEA中搭建struts2项目
- Rabbitmq集群高可用部署详细
- 数据结构(二 ) 线性结构
- 在Android Studio中修改包名?ApplicationId 与 PackageName
- 持续集成工具FinalBuilder使用心得
- PostgreSQL关系型数据库