ASP.NET 生成高质量缩略图代码

asp.net|缩略图

 private static Size NewSize(int maxWidth, int maxHeight, int width, int height)
  {
   double w = 0.0;
   double h = 0.0;
   double sw = Convert.ToDouble(width);
   double sh = Convert.ToDouble(height);
   double mw = Convert.ToDouble(maxWidth);
   double mh = Convert.ToDouble(maxHeight);
   if ( sw < mw && sh < mh )
   {
    w = sw;
    h = sh;
   }
   else if ( (sw/sh) > (mw/mh) )
   {
    w = maxWidth;
    h = (w * sh)/sw;
   }
   else
   {
    h = maxHeight;
    w = (h * sw)/sh;
   }

   return new Size(Convert.ToInt32(w), Convert.ToInt32(h));
  }

  public static void SendSmallImage(string fileName, string newFile, int maxHeight, int maxWidth)
  {
   System.Drawing.Image img = System.Drawing.Image.FromFile(fileName);
   System.Drawing.Imaging.ImageFormat thisFormat = img.RawFormat;

   Size newSize = NewSize(maxWidth, maxHeight, img.Width, img.Height);
   Bitmap outBmp = new Bitmap(newSize.Width, newSize.Height);
   Graphics g = Graphics.FromImage(outBmp);

   // 设置画布的描绘质量
   g.CompositingQuality = CompositingQuality.HighQuality;
   g.SmoothingMode = SmoothingMode.HighQuality;
   g.InterpolationMode = InterpolationMode.HighQualityBicubic;

   g.DrawImage(img, new Rectangle(0, 0, newSize.Width, newSize.Height),
    0, 0, img.Width, img.Height, GraphicsUnit.Pixel);
   g.Dispose();

   // 以下代码为保存图片时,设置压缩质量
   EncoderParameters encoderParams = new EncoderParameters();
   long[] quality = new long[1];
   quality[0] = 100;

   EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
   encoderParams.Param[0] = encoderParam;

   //获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象。
   ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
   ImageCodecInfo jpegICI = null;
   for (int x = 0; x < arrayICI.Length; x++)
   {
    if (arrayICI[x].FormatDescription.Equals("JPEG"))
    {
     jpegICI = arrayICI[x];//设置JPEG编码
     break;
    }
   }

   if (jpegICI != null)
   {
    outBmp.Save(newFile, jpegICI, encoderParams);
   }
   else
   {
    outBmp.Save(newFile, thisFormat);
   }
           
   img.Dispose();
   outBmp.Dispose();
  }

时间: 2024-11-05 05:34:43

ASP.NET 生成高质量缩略图代码的相关文章

ASP.NET生成高质量缩略图通用函数(c#代码)

asp.net|函数|缩略图 在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.net sdk相关内容.QQROOM网络家园的图片上传用到了所有的4种生成方式.         /// <summary>        /// 生成缩略图        /// </summary>        /// <param name=&

asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式

asp.net|函数|缩略图 在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.net sdk相关内容.QQROOM网络家园的图片上传用到了所有的4种生成方式.         /**//// <summary>        /// 生成缩略图        /// </summary>        /// <param na

ASP.NET生成高质量缩略图通用函数

在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.net sdk相关内容.QQROOM网络家园的图片上传用到了所有的4种生成方式. /// <summary> /// 生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)&l

C# 生成高质量缩略图程序—终极算法_实用技巧

先看代码: using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; /**//// <summary> ///  /// **生成高质量缩略图程序** ///  ///  File: GenerateThumbnail.cs ///  ///  Author: 周振兴 (Zxjay 飘遥) ///  ///  E-Mail: tda7264@163.com

C#根据大图片生成高清缩略图

  C#生成高清缩略图代码,一个C#函数模块,内含注释,后附函数参数,下面来看这个C#生成缩略图代码: 01public static void SetGoodImage(string fileName, string newFile, int maxHeight, int maxWidth,long qualitys) 02{ 03 if (qualitys == 0) 04 { 05 qualitys = 80; 06 } 07 using (System.Drawing.Image img

编写高质量的代码,从命名入手

笔者从事开发多年,有这样一种感觉,查看一些开源项目,如Spring.Apache Common等源码是一件赏心悦目的事情,究其原因,无外两点:1)代码质量非常高:2)命名特别规范(这可能跟老外的英语水平有关). 要写高质量的代码,不是一件容易的事,需要长年累月的锻炼,是一个量变到质变的过程,但要写好命名,只需要有比较好的英语语法基础和一种自我意识即可轻松达到.本博文将会结合本人的开发经验,总结出若干命名规则,这些命名规则纯属个人的使用习惯,不代表是一种理想的规则,在这里列举出来,供大家交流讨论.

高质量PHP代码的50个实用技巧必备(下)_php技巧

接着上篇<高质量PHP代码的50个实用技巧必备(上)>继续研究. 26. 避免直接写SQL, 抽象之 不厌其烦的写了太多如下的语句: <span style="color:#333333;font-family:''Helvetica, Arial, sans-serif'';">$query = "INSERT INTO users(name , email , address , phone) VALUES('$name' , '$email' ,

编写高质量的代码—从命名入手(命名…

笔者从事开发多年,有这样一种感觉,查看一些开源项目,如spring.Apache Common等源码是一件赏心悦目的事情,究其原因,无外两点:1)代码质量非常高:2)命名特别规范(这可能跟老外的英语水平有关). 要写高质量的代码,不是一件容易的事,需要长年累月的锻炼,是一个量变到质变的过程,但要写好命名,只需要有比较好的英语语法基础和一种自我意识即可轻松达到.本博文将会结合本人的开发经验,总结出若干命名规则,这些命名规则纯属个人的使用习惯,不代表是一种理想的规则,在这里列举出来,供大家交流讨论.

C#放缩、截取、合并图片并生成高质量新图的类

原文:C#放缩.截取.合并图片并生成高质量新图的类 using System;using System.Drawing;using System.Drawing.Imaging;using System.Drawing.Drawing2D;using System.IO; namespace Framework{public class ImageClass{        public Image ResourceImage;        public int Width=0;