1. public static System.Drawing.Image GetImage(string path)
  2. {
  3. try
  4. {
  5. if (path.StartsWith("http"))//获取远程图片
  6. {
  7. System.Net.WebRequest request = System.Net.WebRequest.Create(path);
  8. request.Timeout = ;
  9. System.Net.HttpWebResponse httpresponse = (System.Net.HttpWebResponse)request.GetResponse();
  10. Stream s = httpresponse.GetResponseStream();
  11. return System.Drawing.Image.FromStream(s);
  12. }
  13. else//获取本地图片
  14. {
  15. return System.Drawing.Image.FromFile(path);
  16. }
  17. }
  18. catch (Exception ex) { return null; }
  19. }
  20.  
  21. public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
  22. {
  23. System.Drawing.Image originalImage = GetImage(originalImagePath);// System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(originalImagePath));
  24. if (originalImage == null)
  25. return;
  26. int towidth = width;
  27. int toheight = height;
  28.  
  29. int x = ;
  30. int y = ;
  31. int ow = originalImage.Width;
  32. int oh = originalImage.Height;
  33.  
  34. if (mode == "EQU")//指定最大高宽,等比例缩放
  35. {
  36. //if(height/oh>width/ow),如果高比例多,按照宽来缩放;如果宽的比例多,按照高来缩放
  37. if (height * ow > width * oh)
  38. {
  39. mode = "W";
  40. }
  41. else
  42. {
  43. mode = "H";
  44. }
  45. }
  46. switch (mode)
  47. {
  48. case "HW"://指定高宽缩放(可能变形)
  49. break;
  50. case "W"://指定宽,高按比例
  51. toheight = originalImage.Height * width / originalImage.Width;
  52. break;
  53. case "H"://指定高,宽按比例
  54. towidth = originalImage.Width * height / originalImage.Height;
  55. break;
  56. case "Cut"://指定高宽裁减(不变形)
  57. if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
  58. {
  59. oh = originalImage.Height;
  60. ow = originalImage.Height * towidth / toheight;
  61. y = ;
  62. x = (originalImage.Width - ow) / ;
  63. }
  64. else
  65. {
  66. ow = originalImage.Width;
  67. oh = originalImage.Width * height / towidth;
  68. x = ;
  69. y = (originalImage.Height - oh) / ;
  70. }
  71. break;
  72. default:
  73. break;
  74. }
  75.  
  76. //新建一个bmp图片
  77. System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
  78.  
  79. //新建一个画板
  80. System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
  81.  
  82. //设置高质量插值法
  83. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  84.  
  85. //设置高质量,低速度呈现平滑程度
  86. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  87.  
  88. //清空画布并以透明背景色填充
  89. g.Clear(System.Drawing.Color.Transparent);
  90.  
  91. //在指定位置并且按指定大小绘制原图片的指定部分
  92. g.DrawImage(originalImage, new System.Drawing.Rectangle(, , towidth, toheight),
  93. new System.Drawing.Rectangle(x, y, ow, oh),
  94. System.Drawing.GraphicsUnit.Pixel);
  95. try
  96. {
  97. //以jpg格式保存缩略图
  98. bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
  99. }
  100. catch (System.Exception e)
  101. {
  102. throw e;
  103. }
  104. finally
  105. {
  106. originalImage.Dispose();
  107. bitmap.Dispose();
  108. g.Dispose();
  109. }
  110. }

Asp.net 实现图片缩放 无水印(方法二)的更多相关文章

  1. Asp.net 实现图片缩放 无水印(方法一)

    /// <summary> /// 图片缩放 无水印 /// </summary> /// <param name="sourceFile">图 ...

  2. asp .net 为图片添加文字水印(内包含有加图片水印的方法) .

    在项目中先创建一个Imag_writer 类库 在该类库下分别创建两个枚举类型WaterMarkType (水印的类型).WaterMarkPosition (水印的位置).代码如下: using S ...

  3. php图片添加文字水印方法汇总

    方法一: <?php header("content-type:text/html;charset=utf-8"); //指定图片路径 $src = "img/a. ...

  4. php给图片添加文字水印方法汇总

    在php中要给图片加水印我们需要给php安装GD库了,这里我们不介绍GD库安装,只介绍怎么利用php给图片添加文字水印的4种方法的汇总.有需要的小伙伴可以参考下. 1: 面向过程的编写方法 1 2 3 ...

  5. C#图片处理示例(裁剪,缩放,清晰度,水印)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  6. java 图片压缩 剪切 水印 转换 黑白 缩放

    专注java已6年,欢迎加入java核心技术QQ群:135138817,每周五晚有群主进行技术讲座. import java.awt.AlphaComposite; import java.awt.C ...

  7. asp .net 为图片添加图片水印 .

    首先写好一个写入图片水印的类,先创建一个ImageWriter类库   (该类中有包含枚举类型和方法) using System; using System.Collections.Generic; ...

  8. Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理

    前言 java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API ...

  9. ASP.NET(C#)图片加文字、图片水印,神啊,看看吧

    ASP.NET(C#)图片加文字.图片水印 一.图片上加文字: //using System.Drawing; //using System.IO; //using System.Drawing.Im ...

随机推荐

  1. HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)

    Problem Description The "Harry Potter and the Goblet of Fire" will be on show in the next ...

  2. LaTeX手动安装宏包(package)以及生成帮助文档的整套流程

    注意:版权所有,转载请注明出处. 我使用的是ctex套装,本来已经自带了许多package,但是有时候还是需要使用一些没有预装的宏包,这时就需要自己安装package了.下载package可以从CTA ...

  3. Android RecyclerView使用(一)

    RecyclerView一种可以替换掉listview gridview 瀑布流等控件的新视图控件,控制视图回收和复用 ==优化内存可以替换listview 与listview的不同之处是:listv ...

  4. LINQ 从 CSV 文件生成 XML

    本文参考:http://msdn.microsoft.com/zh-cn/library/bb387090.aspx 下面的代码对字符串数组执行 LINQ 查询. 在 C# 版本中,该查询使用 let ...

  5. Web App和Native App 谁将是未来

    未来是Web App的天下,还是Native App的天下?作为设计师,我们是应该努力把客户端的体验提升到最优,还是在网页应用层面上做更多的设计?这个一直是大家关心的话题.那么,我们首先应该立体的认识 ...

  6. python re

    >>> url="http://apk.gfan.com/Product/App45021.html" >>> result=html.cont ...

  7. JSP-标准动作标记

    JSP标准动作标记 在客户请求JSP页面时,JSP动作利用XML语法格式的标记来控制Servlet引擎的行为.利用JSP动作可以动态地插入文件.重用JavaBean组件.把用户重定向到另外的页面.为J ...

  8. c++中返回对象与返回引用的区别

    这几天在做用C++做课程设计,对其返回对象的实现感到迷惑. 通过对汇编代码的分析,可以清楚的看到,直接返回引用和返回对象的区别到底是什么. 分析的程序如下 #include<cstdio> ...

  9. iOS 使用Charts框架 折线,柱状,K线,饼状,雷达全攻略

    我是前言: 大约几个月前我在某平台写了一篇文章, 文中简单地介绍了Charts两种图表的样式的使用, 不过有种意犹未尽的感觉, 利用周末的空闲时间再次看了看, 有了新的收获, 今天发出来,分享给大家, ...

  10. easyui 常用代码

    最近在公司制作内部使用数据管理网页,用到了easyui,使用过程中发现与jquery的写法有比较多不一样的地方,趁现在有空,先做个笔记. (这里主要说明的是combobox的用法,其他的像textbo ...