用.net实现按透明度生成水印文件

简介:          ///   /// 生成水印,可按左上、左下、右上、右下、居中、透明度生成文件,只对jpeg或jpg格式有效!  ///   /// 底图  /// 水印图  /// 要保存的文件  /// 位置:左上(1)、左下(2)、右上(3)、右下(4)、居中(5)  /// 透明度...
         /// <summary>
  /// 生成水印,可按左上、左下、右上、右下、居中、透明度生成文件,只对jpeg或jpg格式有效!
  /// </summary>
  /// <param name="sourceFile">底图</param>
  /// <param name="waterMarkFile">水印图</param>
  /// <param name="saveFile">要保存的文件</param>
  /// <param name="local">位置:左上(1)、左下(2)、右上(3)、右下(4)、居中(5)</param>
  /// <param name="alpha">透明度(1-100)</param>
  /// <returns>bool,是否成功</returns>
  public static bool MakeWaterImage(string sourceFile,string waterMarkFile,string saveFile,int local,int alpha)
  {  
  bool result;
  
  if( !File.Exists(sourceFile) || !File.Exists(waterMarkFile)) //如果源图或水印图不存在
  return false;
  
  FileInfo fi = new FileInfo(sourceFile);
  //判断文件类型是否合法  
  if(fi.Extension.ToLower()!=".jpg" & fi.Extension.ToLower()!=".jpeg")
  return false;
  
  try
  {
  //原图
  Bitmap sImage = new Bitmap(sourceFile);
  int sWidth  = sImage.Width;
  int sHeight  = sImage.Height;
  
  //水印图
  Bitmap wImage = new Bitmap(waterMarkFile);
  int wWidth  = wImage.Width;
  int wHeight  = wImage.Height;

  //make Graphics.
  Graphics g = Graphics.FromImage(sImage);
  int x; //临时变量
  int y; //监时变量
  int x1 = 0; //原图和水印图的宽度差,即开始绘图的X位置
  int y1 = 0; //原图和水印图的高度差,即开始绘图的Y位置
  int w = 0; //生成的水印图的宽度,即结束绘图的X位置
  int h = 0; //生成的水印图的高度,即结束绘图的Y位置
  int al; //alpha
  int rl; //Red
  int gl; //Green
  int bl; //Blue

  //校验透明度
  if(alpha < 1 || alpha > 100)
  al = 80;
  else
  al = alpha;
  if(sWidth > wWidth & sHeight > wHeight) //如果源图比水印图大
  {    
  switch(local)
  {
  case 1: //左上
  x1 = 0;
  y1 = 0;      

目录
相关文章
|
5月前
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
101 0
|
5月前
|
数据安全/隐私保护
.net给图片增加水印和生成图片缩略图
.net给图片增加水印和生成图片缩略图
58 0
|
1月前
.NET 压缩/解压文件
【9月更文挑战第5天】在 .NET 中,可利用 `System.IO.Compression` 命名空间进行文件的压缩与解压。首先引入相关命名空间,然后通过 GZipStream 类实现具体的压缩或解压功能。下面提供了压缩与解压文件的方法示例及调用方式,便于用户快速上手操作。
|
2月前
|
Java Windows 容器
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
|
2月前
|
开发框架 .NET Linux
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
|
3月前
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
|
3月前
|
算法 API 数据安全/隐私保护
.NET使用原生方法实现文件压缩和解压
.NET使用原生方法实现文件压缩和解压
.NET使用原生方法实现文件压缩和解压
|
3月前
|
存储 C#
.NET使用CsvHelper快速读取和写入CSV文件
.NET使用CsvHelper快速读取和写入CSV文件
|
4月前
|
存储 安全 Unix
【.Net Core】深入理解IO之文件和目录
【.Net Core】深入理解IO之文件和目录
45 4
|
4月前
|
存储 C#
.NET使用CsvHelper快速读取和写入CSV文件
优秀项目和框架精选 该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。