本文旨在與各位朋友們分享我是如何在項目中用C# “ps圖片” 為網站生成同比例微縮圖的解決方案。如有不足之處歡迎您指出。
一、技術概述:
1.Ajax無刷新上傳圖片,詳情請閱我的這篇文章。(jquery + c# ashx)
2.C#位圖處理 System.Drawing。
3.最新demo支持IE7,IE8,FireFox。
二、微縮圖處理方法:
生成微縮圖的核心方法:
CreateThumbnailPicture/// <summary>
/// 圖片微縮圖處理
/// </summary>
/// <param name="srcPath">源圖片</param>
/// <param name="destPath">目標圖片</param>
/// <param name="width">寬度</param>
/// <param name="height">高度</param>
public static void CreateThumbnailPicture(string srcPath, string destPath, int width, int height)
{
//根據圖片的磁盤絕對路徑獲取 源圖片 的Image對象
System.Drawing.Image img = System.Drawing.Image.FromFile(srcPath);
//bmp: 最終要建立的 微縮圖 位圖對象。
Bitmap bmp = new Bitmap(width, height);
//g: 繪制 bmp Graphics 對象
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Transparent);
//為Graphics g 對象 初始化必要參數,很容易理解。
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
//源圖片寬和高
int imgWidth = img.Width;
int imgHeight = img.Height;
//繪制微縮圖
g.DrawImage(img, new System.Drawing.Rectangle(0, 0, width, height), new System.Drawing.Rectangle(0, 0, imgWidth, imgHeight)
, GraphicsUnit.Pixel);
ImageFormat format = img.RawFormat;
ImageCodecInfo info = ImageCodecInfo.GetImageEncoders().SingleOrDefault(i => i.FormatID == format.Guid);
EncoderParameter param