开发者社区> nicenelly> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

asp.net显示高清缩略图

简介: 如题:   添加命名空间如下: using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.
+关注继续查看

如题:

 

添加命名空间如下:

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;


-----------------------------------------------------------------------------------------------

 

显示原图:

[c-sharp] view plain copy
  1. //显示原图  
  2.     protected void btnImage_Click(object sender, EventArgs e)  
  3.     {  
  4.         string filePath = Server.MapPath("~/Up/美女.jpg");  
  5.         //方式一:  
  6.         //Response.ContentType = "image/jpeg";  
  7.         //Response.WriteFile(filePath);  
  8.   
  9.         //方式二:  
  10.         FileStream imageStr = new FileStream(filePath, FileMode.Open);  
  11.         byte[] imageData=new byte[imageStr.Length];  
  12.         imageStr.Read(imageData,0,(int)imageStr.Length);  
  13.         Response.OutputStream.Write(imageData, 0, (int)imageStr.Length);  
  14.           
  15.     }  

 

想要改变的尺寸:

[c-sharp] view plain copy
  1. private static Size NewSize(int maxWidth, int maxHeight, int Width, int Height)  
  2.     {  
  3.         double w = 0.0;  
  4.         double h = 0.0;  
  5.         double sw = Convert.ToDouble(Width);  
  6.         double sh = Convert.ToDouble(Height);  
  7.         double mw = Convert.ToDouble(maxWidth);  
  8.         double mh = Convert.ToDouble(maxHeight);  
  9.   
  10.         if (sw < mw && sh < mh)//如果maxWidth和maxHeight大于源图像,则缩略图的长和高不变  
  11.         {  
  12.             w = sw;  
  13.             h = sh;  
  14.         }  
  15.         else if ((sw / sh) > (mw / mh))  
  16.         {  
  17.             w = maxWidth;  
  18.             h = (w * sh) / sw;  
  19.         }  
  20.         else  
  21.         {  
  22.             h = maxHeight;  
  23.             w = (h * sw) / sh;  
  24.         }  
  25.         return new Size(Convert.ToInt32(w), Convert.ToInt32(h));  
  26.     }  

 

转化成缩略图:

 

[c-sharp] view plain copy
  1. //转化成缩略图  
  2.     public void SendSmallImage(string filename, string newfile, int maxHeight, int maxWidth)  
  3.     {  
  4.         System.Drawing.Image img = System.Drawing.Image.FromFile(filename);//源图像的信息  
  5.         System.Drawing.Imaging.ImageFormat thisformat = img.RawFormat; //源图像的格式  
  6.   
  7.         Size newSize = NewSize(maxWidth, maxHeight, img.Width, img.Height); //返回调整后的图像Width与Height  
  8.         Bitmap outBmp = new Bitmap(newSize.Width, newSize.Height);  
  9.         Graphics g = Graphics.FromImage(outBmp);  
  10.         //设置画布的描绘质量(高)  
  11.         g.CompositingQuality = CompositingQuality.HighQuality;  
  12.         g.SmoothingMode = SmoothingMode.HighQuality;  
  13.         g.InterpolationMode = InterpolationMode.HighQualityBicubic;  
  14.         g.DrawImage(img, new Rectangle(0, 0, newSize.Width, newSize.Height), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel);  
  15.         g.Dispose();  
  16.         //以下代码为保存图片时,设置压缩质量  
  17.         EncoderParameters encoderParams = new EncoderParameters();  
  18.         long[] quality = new long[1];  
  19.         quality[0] = 100;  
  20.         EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);  
  21.         encoderParams.Param[0] = encoderParam;  
  22.         //获取包含有关内置图像编码解码器的信息的ImageCodecInfo对象。  
  23.         ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();  
  24.         ImageCodecInfo jpegICI = null;  
  25.         for (int x = 0; x < arrayICI.Length; x++)  
  26.         {  
  27.             if (arrayICI[x].FormatDescription.Equals("JPEG"))  
  28.             {  
  29.                 jpegICI = arrayICI[x];//设置jpeg编码  
  30.                 break;  
  31.             }  
  32.         }  
  33.         if (jpegICI != null)  
  34.         {  
  35.             outBmp.Save(newfile , jpegICI, encoderParams);  
  36.         }  
  37.         else  
  38.         {  
  39.             outBmp.Save(newfile, thisformat);  
  40.         }  
  41.         img.Dispose();  
  42.         outBmp.Dispose();  
  43.     }  

 

页面上是一个FileUpload控件,先上传原图,在显示在页面上,添加一个Image控件,宽,高设为:100×100,用以对比缩略图。

将原图输出缩略为100×100;



原文发布时间为:2009-10-27


本文作者:vinoYang


本文来自云栖社区合作伙伴CSDN博客,了解相关信息可以关注CSDN博客。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
在asp.net中显示PDF的方法:
来源:http://www.cnblogs.com/tengs2000/archive/2009/02/23/1396646.html   一、直接显示,使用的还是原页面的URL 1 Response.
787 0
ASP.NET自定义控件组件开发 第一章 第三篇
原文:ASP.NET自定义控件组件开发 第一章 第三篇                                             第三篇:第一章的完结篇     系列文章链接: ASP.
889 0
ASP.NET自定义控件组件开发 第一章 第二篇 接着待续
原文:ASP.NET自定义控件组件开发 第一章 第二篇 接着待续      ASP.NET自定义控件组件开发 第一章 第二篇 接着待续     很感谢大家给我的第一篇ASP.NET控件开发的支持!在写这些之前,我也看了一些例子,想选中一些好上手的例子,这样,可能一些例子大家以前都见过,但是我想说:同样是弹钢琴,同样一首“命运交响曲”,有的人弹的让人荡气回肠,有的人弹的就很一般。
922 0
[转]性能比较:.NET Remoting 与 ASP.NET Web 服务
http://www.cnblogs.com/cheatlove/articles/385119.html 摘要:本文对 Microsoft ASP.NET Web 服务与 Microsoft .NET Remoting 的相对性能进行比较。
1162 0
一起谈.NET技术,asp.net控件开发基础(10)
  集合属性相信大家都很熟悉也很常用,如DropDownList,ListBox等控件             测试1            测试2            测试3           1.实现集合属性效果   经过前面几篇的学习,相信这一篇看起来已经相对简单了.我们要做的就是,先定义一个复杂属性,然后用迭代语句获取数组数据即可。
772 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载