如题,收集相关技术资料,或思路

解决方案 »

  1.   

    private void ShowThumbnail(string oldfile, string newfile, int h, int w)
    {
       
    System.Drawing.Image img = System.Drawing.Image.FromFile(oldfile);
    System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback); int oldh = img.Height;
    int oldw = img.Width; int newh,neww; double h1 = oldh*1.0/h;
    double w1 = oldw*1.0/w; double f = (h1>w1)? h1:w1; if(f < 1.0)
    {
    newh = oldh;
    neww = oldw;
    }
    else
    {
    newh = (int)(oldh/f);
    neww = (int)(oldw/f);
    } System.Drawing.Image myThumbnail = img.GetThumbnailImage(neww, newh, myCallback, IntPtr.Zero); myThumbnail.Save(newfile, System.Drawing.Imaging.ImageFormat.Jpeg); img.Dispose();
    myThumbnail.Dispose();
    }
    private bool ThumbnailCallback()
    {
    return false;
    }
      

  2.   

    Bitmap   myBitmap   =   new   Bitmap("Runner.jpg");     
        
      //   One   hand   of   the   runner   
      Rectangle   sourceRectangle   =   new   Rectangle(80,   70,   80,   45);   
        
      //   Compressed   hand   
      Rectangle   destRectangle1   =   new   Rectangle(200,   10,   20,   16);   
        
      //   Expanded   hand   
      Rectangle   destRectangle2   =   new   Rectangle(200,   40,   200,   160);   
        
      //   Draw   the   original   image   at   (0,   0).   
      myGraphics.DrawImage(myBitmap,   0,   0);   
        
      //   Draw   the   compressed   hand.   
      myGraphics.DrawImage(   
            myBitmap,   destRectangle1,   sourceRectangle,   GraphicsUnit.Pixel);   
        
      //   Draw   the   expanded   hand.     
      myGraphics.DrawImage(   
            myBitmap,   destRectangle2,   sourceRectangle,   GraphicsUnit.Pixel);
      

  3.   

    上面是压缩 尺寸不变这个是缩略图变长和宽的ImageThumbnail.cs
    using System;
    using System.IO;
    using System.Drawing;
    using System.Drawing.Imaging;public class ImageThumbnail
    {
         public Image ResourceImage;
         private int ImageWidth;
         private int ImageHeight;
         public string ErrorMessage;     public ImageThumbnail(string ImageFileName)
         {
             ResourceImage = Image.FromFile(ImageFileName);
             ErrorMessage = "";
         }     public bool ThumbnailCallback()
         {
             return false;
         }
         // 方法1,按大小
         public bool ReducedImage(int Width, int Height, string targetFilePath)
         {
             try
             {
                 Image ReducedImage;
                 Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                 ReducedImage = ResourceImage.GetThumbnailImage(Width, Height, callb, IntPtr.Zero);
                 ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);
                 ReducedImage.Dispose();
                 return true;
             }
             catch (Exception e)
             {
                 ErrorMessage = e.Message;
                 return false;
             }
         }
         // 方法2,按百分比   缩小60% Percent为0.6 targetFilePath为目标路径
         public bool ReducedImage(double Percent, string targetFilePath)
         {
             try
             {
                 Image ReducedImage;
                 Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                 ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent);
                 ImageHeight = (ResourceImage.Height)*ImageWidth/ ResourceImage.Width;//等比例缩放
                 ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);
                 ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);
                 ReducedImage.Dispose();
                 return true;
             }
             catch (Exception e)
             {
                 ErrorMessage = e.Message;
                 return false;
             }
         }
    }后台代码:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    public partial class _Default : System.Web.UI.Page
    {     protected void Page_Load(object sender, EventArgs e)
         {     }
         protected void bt_upload_Click(object sender, EventArgs e)
         {
             try
             {
                 if (FileUpload1.PostedFile.FileName == "")
                 {
                     this.lb_info.Text = "请选择文件!";
                 }
                 else
                 {
                     string filepath = FileUpload1.PostedFile.FileName;
                     string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);
                     string serverpath1 = Server.MapPath("images/") + filename;
                     string serverpath2 = Server.MapPath("images/") + System.DateTime.Now.ToString("yyy-MM-dd-hh-mm-ss") + Session.SessionID + filename;
                     FileUpload1.PostedFile.SaveAs(serverpath1);
                     ImageThumbnail img = new ImageThumbnail(filepath);
                     img.ReducedImage(0.4, serverpath2);//0.4表示缩小40%
                     this.lb_info.Text = "上传成功!";
                 }
             }
             catch (Exception error)
             {
                 this.lb_info.Text = "上传发生错误!原因:" + error.ToString();
             }
         }
    }
      

  4.   

    /**//// <summary>
           /// 生成缩略图
           /// </summary>
           /// <param name="originalImagePath">源图路径(物理路径)</param>
           /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
           /// <param name="width">缩略图宽度</param>
           /// <param name="height">缩略图高度</param>
           /// <param name="mode">生成缩略图的方式</param>    
           public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
           {
               Image originalImage = Image.FromFile(originalImagePath);
               
               int towidth = width;
               int toheight = height;
           
               int x = 0;
               int y = 0;
               int ow = originalImage.Width;
               int oh = originalImage.Height;                   switch (mode)
               {        
                   case "HW"://指定高宽缩放(可能变形)                
                       break;
                   case "W"://指定宽,高按比例                    
                       toheight = originalImage.Height * width/originalImage.Width;
                       break;
                   case "H"://指定高,宽按比例
                       towidth = originalImage.Width * height/originalImage.Height;                    
                       break;        
                   case "Cut"://指定高宽裁减(不变形)                
                       if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)
                       {
                           oh = originalImage.Height;
                           ow = originalImage.Height*towidth/toheight;
                           y = 0;
                           x = (originalImage.Width - ow)/2;
                       }
                       else
                       {
                           ow = originalImage.Width;
                           oh = originalImage.Width*height/towidth;
                           x = 0;
                           y = (originalImage.Height - oh)/2;
                       }
                       break;                    
                   default :
                       break;
               }    
               
               //新建一个bmp图片
               Image bitmap = new System.Drawing.Bitmap(towidth,toheight);           //新建一个画板
               Graphics g = System.Drawing.Graphics.FromImage(bitmap);           //设置高质量插值法
               g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;           //设置高质量,低速度呈现平滑程度
               g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;           //清空画布并以透明背景色填充
               g.Clear(Color.Transparent);                   //在指定位置并且按指定大小绘制原图片的指定部分
               g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
                   new Rectangle(x, y, ow,oh),
                   GraphicsUnit.Pixel);           try
               {            
                   //以jpg格式保存缩略图
                   bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
               }
               catch(System.Exception e)
               {
                   throw e;
               }
               finally
               {
                   originalImage.Dispose();
                   bitmap.Dispose();                        
                   g.Dispose();
               }
           } 我收藏一下这个代码,