生成缩略图

  1. #region 生成缩略图
  2. /// <summary>
  3. /// 生成缩略图
  4. /// </summary>
  5. /// <param name="originalImagePath">源图路径(物理路径)</param>
  6. /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
  7. /// <param name="width">缩略图宽度</param>
  8. /// <param name="height">缩略图高度</param>
  9. /// <param name="mode">生成缩略图的方式</param>
  10. public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
  11. {
  12. Image originalImage = Image.FromFile(originalImagePath);
  13.  
  14. int towidth = width;
  15. int toheight = height;
  16.  
  17. int x = ;
  18. int y = ;
  19. int ow = originalImage.Width;
  20. int oh = originalImage.Height;
  21.  
  22. switch (mode)
  23. {
  24. case "HW"://指定高宽缩放(可能变形)
  25. break;
  26. case "WC":
  27. if (originalImage.Width > width)
  28. {
  29. toheight = originalImage.Height * width / originalImage.Width;
  30. }
  31. else
  32. {
  33. towidth = originalImage.Width;
  34. toheight = originalImage.Height;
  35. }
  36. break;
  37. case "W"://指定宽,高按比例
  38. toheight = originalImage.Height * width / originalImage.Width;
  39. break;
  40. case "H"://指定高,宽按比例
  41. towidth = originalImage.Width * height / originalImage.Height;
  42. break;
  43. case "Cut"://指定高宽裁减(不变形)
  44. if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
  45. {
  46. oh = originalImage.Height;
  47. ow = originalImage.Height * towidth / toheight;
  48. y = ;
  49. x = (originalImage.Width - ow) / ;
  50. }
  51. else
  52. {
  53. ow = originalImage.Width;
  54. oh = originalImage.Width * height / towidth;
  55. x = ;
  56. y = (originalImage.Height - oh) / ;
  57. }
  58. break;
  59. default:
  60. break;
  61. }
  62.  
  63. //新建一个bmp图片
  64. Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
  65.  
  66. //新建一个画板
  67. Graphics g = System.Drawing.Graphics.FromImage(bitmap);
  68.  
  69. //设置高质量插值法
  70. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  71.  
  72. //设置高质量,低速度呈现平滑程度
  73. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  74.  
  75. //清空画布并以透明背景色填充
  76. g.Clear(Color.Transparent);
  77.  
  78. //在指定位置并且按指定大小绘制原图片的指定部分
  79. g.DrawImage(originalImage, new Rectangle(, , towidth, toheight),
  80. new Rectangle(x, y, ow, oh),
  81. GraphicsUnit.Pixel);
  82.  
  83. try
  84. {
  85. //以jpg格式保存缩略图
  86. bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
  87. }
  88. catch (System.Exception e)
  89. {
  90. throw e;
  91. }
  92. finally
  93. {
  94. originalImage.Dispose();
  95. bitmap.Dispose();
  96. g.Dispose();
  97. }
  98. }
  99. #endregion

在图片上生成图片水印

  1. #region 在图片上生成图片水印
  2. /// <summary>
  3. /// 在图片上生成图片水印
  4. /// </summary>
  5. /// <param name="Path">原服务器图片路径 </param>
  6. /// <param name="Path_syp">生成的带图片水印的图片路径 </param>
  7. /// <param name="Path_sypf">水印图片路径 </param>
  8. public static void AddWaterPic(string Path, string Path_syp, string Path_sypf,string style)
  9. {
  10. Path = HttpContext.Current.Server.MapPath(Path);
  11. Path_syp = HttpContext.Current.Server.MapPath(Path_syp);
  12.  
  13. System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
  14. System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);
  15. Graphics g = Graphics.FromImage(image);
  16. int x=;
  17. int y=;
  18.  
  19. switch (style)
  20. {
  21. case "C":
  22. x = image.Width/ - copyImage.Width/;
  23. y = Convert.ToInt32(image.Height * 0.8) - copyImage.Height/;
  24. break;
  25. case "RD":
  26. x = (image.Width - copyImage.Width) - ;
  27. y = (image.Height - copyImage.Height) - ;
  28. break;
  29. }
  30.  
  31. Rectangle rect = new Rectangle(x, y, copyImage.Width, copyImage.Height);
  32. g.DrawImage(copyImage, rect, , , copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
  33. g.Dispose();
  34.  
  35. image.Save(Path_syp);
  36. image.Dispose();
  37. }
  38. #endregion

C#生成缩略图,C#给图片添加水印的更多相关文章

  1. 如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放

    如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放 参考网站:nginx-lua-fas ...

  2. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  3. C#上传图片同时生成缩略图,控制图片上传大小。

    #region 上传图片生成缩略图 /// <summary> /// 上传图片 /// </summary> /// <param name="sender& ...

  4. asp.net生成缩略图、文字图片水印

    /// <summary> /// 会产生graphics异常的PixelFormat /// </summary> private static PixelFormat[] ...

  5. 关于生成缩略图及水印图片时出现GDI+中发生一般性错误解决方法

    System.Drawing.Image OldImage = null; oldImage = System.Drawing.Image.FromFile(ImageUrl); 使用该方法读取图片时 ...

  6. php 图片操作类,支持生成缩略图,添加水印,上传缩略图

    <?php class Image {     //类开始     public $originimage = ""; //源图片文件地址     public $image ...

  7. PHP 图片处理工具类(添加水印与生成缩略图)

    =================ImageTool.class.php================= <?php class ImageTool { private $imagePath; ...

  8. yii php 图片上传与生成缩略图

    今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图              ($pic_action_url = $this->createAbsoluteUrl('h ...

  9. [原创]超强C#图片上传,加水印,自动生成缩略图源代码

    <%@ Page Language=“C#“ AutoEventWireup=“true“ %> <%@ Import Namespace=“System“ %> <%@ ...

随机推荐

  1. spring定时器cron

    关于cron表达式(参考资料):Cron 表达式包括以下 7 个字段: 秒 分 小时 月内日期 月 周内日期 年(可选字段) 特殊字符Cron 触发器利用一系列特殊字符,如下所示: 反斜线(/)字符表 ...

  2. 学习笔记CB006:依存句法、LTP、n元语法模型、N-最短路径分词法、由字构词分词法、图论、概率论

    依存句法分析,法国语言学家L.Tesniere1959年提出.句法,句子规则,句子成分组织规则.依存句法,成分间依赖关系.依赖,没有A,B存在错误.语义,句子含义. 依存句法强调介词.助词划分作用,语 ...

  3. 谈一谈socket与java

    用java中socket实现socket聊天 1,      什么是socket Socket 是指网络套接字,什么是套接字呢?    这是网络上一种端对端的网络协议,端口就是进程号,socket在网 ...

  4. 20164301 Exp3 免杀原理与实践

    Exp3 免杀原理与实践  1. 实践内容 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程 1.2 通过组合应 ...

  5. java面试总躲不过的并发(二):volatile原理 + happens-before原则

    一.happens-before原则 同一个线程中的,前面的操作 happens-before 后续的操作.(即单线程内按代码顺序执行.但是,在不影响在单线程环境执行结果的前提下,编译器和处理器可以进 ...

  6. 关于pycharm中缩进、粘贴复制等文本编辑功能部分失效的解决办法

    有可能是同时安装了vim,冲突导致: 在seetings中点击Plugins,搜索vim卸载后功能恢复

  7. gtest 三种事件机制

    前言: 1.首先说明gtest中事件的结构层次: 测试程序:一个测试程序只有一个main函数,也可以说是一个可执行程序是一个测试程序.该级别的事件机制会在程序的开始和结束执行. 测试套件:代表一个测试 ...

  8. day-06数据类型与深浅拷贝

    深浅拷贝 # 值拷贝:应用场景最多 ls = [1, 'abc', [10]] ls1 = ls # ls1直接将ls中存放的地址拿过来# ls内部的值发生任何变化,ls1都会随之变化 ls2 = l ...

  9. git 命令提交文件

    方法/步骤   打开要添加的文件的位置,右键,点击下面强调的内容,进入命令页面 先执行命git pull,这是提交的基本操作, git status,查看现在当前的文件状态 没有看到你现在要添加的文件 ...

  10. 原生JS实现选中的radio变为未选中

    需求如下,radio已经选中,再点击,取消选中状态. 效果如链接:演示地址 直接上代码: <!DOCTYPE html> <html> <head> <met ...