上传图片生成缩略图,原图和缩略图地址一样的时候缩略图会把原图覆盖掉

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

asp.net——上传图片生成缩略图的更多相关文章

  1. asp.net中生成缩略图并添加版权实例代码

    这篇文章介绍了asp.net中生成缩略图并添加版权实例代码,有需要的朋友可以参考一下 复制代码代码如下: //定义image类的对象 Drawing.Image image,newimage; //图 ...

  2. 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条

    不了解Uploadify的,先看看前一篇详细说明 http://www.cnblogs.com/XuebinDing/archive/2012/04/26/2470995.html Uploadify ...

  3. 上传图片+生成缩略图 ashx代码

    html页面 <form action="Handlers/UploadImageHandler.ashx" method="post" enctype= ...

  4. tp3.2上传图片生成缩略图

    //引入 use think\Image; /* * $name为表单上传的name值 * $filePath为为保存在入口文件夹public下面uploads/下面的文件夹名称,没有的话会自动创建 ...

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

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

  6. Asp.Net 上传图片并生成高清晰缩略图

    在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...

  7. Asp.Net 上传图片并生成高清晰缩略图(转)

    在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...

  8. C#上传图片和生成缩略图以及图片预览

    因工作需要,上传图片要增加MIME类型验证和生成较小尺寸的图片用于浏览.根据网上代码加以修改做出如下效果图: 前台代码如下: <html xmlns="http://www.w3.or ...

  9. MVC4 上传图片并生成缩略图

    Views @using (Html.BeginForm("Create","img",FormMethod.Post, new { enctype = &qu ...

随机推荐

  1. 条件随机场(CRF)-IIS学习算法

    改进的迭代尺度法(Improved Iterative Scaling),在很多模型求解中用到,比如最大熵.CRFs等,对模型是对数线性模型的似然都适用.这个算法的思想也很简单,通俗的理解就是通过两个 ...

  2. 管理Linux服务器的用户和组

    管理Linux服务器的用户和组 Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源. 为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范每个用户的权限, ...

  3. T-SQL 总结

    SP0_AddLinkedServer.sql [创建Linked SQL Server ] USE [master] GO ) drop procedure dbo.SP_Temp_AddLinke ...

  4. 总结开发中使用到的npm 库

    1.Swiper  https://github.com/nolimits4web/Swiper 移动端slides插件 2.fetch https://github.com/whatwg/fetch ...

  5. probably another instance of uWSGI is running on the same address (127.0.0.1:9090). bind(): Address already in use

    probably another instance of uWSGI is running on the same address (127.0.0.1:9090). bind(): Address ...

  6. Python Geoip 获取IP地址经度、纬度

    简介: 除了一些免费的 API 接口,例如 http://ipinfo.io/223.155.166.172 可以得到一些信息外,还可以通过 python-geoip 库来解决这个问题. shell ...

  7. Vue SPA应用中使用Layer的iframe 弹出层,并且传值

    问题来源: BOOS 竟然说喜欢有可移动可最大化的弹出层,这!!! SPA 模式下就是这种引入Vue.js的写法 layer.open({ type: , area: ['840px', '550px ...

  8. SVG DOM常用属性和方法介绍(1)

    12.2  SVG DOM常用属性和方法介绍 将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析 ...

  9. Linux内核分析 - 网络[十四]:IP选项

    Linux内核分析 - 网络[十四]:IP选项 标签: linux内核网络structsocketdst 2012-04-25 17:14 5639人阅读 评论(1) 收藏 举报  分类: 内核协议栈 ...

  10. spring定时任务执行两次的原因与解决方法

    spring定时任务,本地执行一次,放到服务器上后,每次执行时会执行两次,原因及解决办法. http://blog.csdn.net/yaobengen/article/details/7031266 ...