.NET&Others

今朝有酒今朝饮
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
页面上经常有点击一张小图片查看大图片的情况,那么小图片怎么来的呢?
我目前的项目就有这种情况,但“生成”小图片的做法令人难以接受,做法是做一张大图片的缩小版,和大图片一起上传,人家不满意了:“我上传一张图片同时还要做一张小的?”。的确,不是每个人都有这个耐心,也并不是每个人都是图形处理能手。
下面将我的做法show给大家:
页面上有个名为pictureFile的文件上传控件,一个名为btnSubmit 按钮.下面帖代码:
protected void btnSubmit_Click(object sender, System.EventArgs e)
    
{
            byte[] pic= null;
         System.Drawing.Image img;
            img = System.Drawing.Image.FromStream(pictureFile.PostedFile.InputStream);
            if (img.Width > 100 || img.Height > 100)//小图片要求<=100*100px
            {
                pic= GetThumbnailImage(img);
            }
            else
            {
                pic= new byte[pictureFile.PostedFile.InputStream.Length];
                pictureFile.PostedFile.InputStream.Read(pic, 0, (int)pictureFile.PostedFile.InputStream.Length);
            }
      
       //接下来就可以将pic保存到数据库的图片字段
    }

下面是生成<=100*100px图片的函数
    private byte[] GetThumbnailImage(System.Drawing.Image img)
    
{
        
byte[] imgByte;
        
float iScale = img.Height > img.Width ? (float)img.Height / 100 :(float)img.Width / 100;
        img 
= img.GetThumbnailImage((int)(img.Width/iScale),(int)(img.Height/iScale), null, IntPtr.Zero);
        MemoryStream memStream 
= new MemoryStream();
        img.Save(memStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        memStream.Flush();
        imgByte 
= memStream.ToArray();
        
return
 imgByte;
    }