获取图片缩略图

 protected void btnUpLoadFile_Click(object sender, EventArgs e)
    {
        //判断上传文件格式是否有效
        if (UpLoadFile.PostedFile.ContentType.ToLower().IndexOf("image") < 0)
        {
            string strAlert = "<script language = 'javascript'>alert('文件格式错误');</script>";
            Response.Write(strAlert);
            return;
        }

        //生成原图
        Stream oStream = UpLoadFile.PostedFile.InputStream;
        System.Drawing.Image oImage = System.Drawing.Image.FromStream(oStream);

        //获取原图的Height和Width
        int oHeight = oImage.Height;
        int oWidth = oImage.Width;

        //设置初始时缩略图的Height和Width
        int tHeight = 100;
        int tWidth = 100;

        //按照原始比例计算所略图的Height和Width
        if (oWidth > oHeight)
        {
            tHeight = (int)Math.Floor(Convert.ToDouble(oHeight)/Convert.ToDouble(oWidth)*tWidth);
        }
        else
        {
            tWidth = (int)Math.Floor(Convert.ToDouble(oWidth)/Convert.ToDouble(oHeight)*Convert.ToDouble(tHeight));
        }

        //生成缩略图
        Bitmap tImage = new Bitmap(tWidth, tHeight);
        Graphics graphic = Graphics.FromImage(tImage);
        graphic.InterpolationMode = InterpolationMode.High;//设置高质量插值法
        graphic.SmoothingMode = SmoothingMode.HighQuality; ;//设置高质量,低速度呈现平滑程度
        graphic.Clear(Color.Transparent);
        graphic.DrawImage(oImage, new Rectangle(0, 0, tWidth, tHeight), new Rectangle(0, 0, oWidth, oHeight),
                          GraphicsUnit.Pixel);
        string oFullName = Server.MapPath(".") + "/" + "o" + DateTime.Now.ToShortDateString().Replace("-", "")
                            + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString()
                            + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg"; //保存原图的物理路径
        string tFullName = Server.MapPath(".") + "/" + "t" + DateTime.Now.ToShortDateString().Replace("-", "")
                           + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString()
                           + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg";//缩略图的物理路径
        try
        {
            oImage.Save(oFullName, System.Drawing.Imaging.ImageFormat.Jpeg);
            tImage.Save(tFullName, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        catch(Exception ex)
        {
            string strEx = "<script language = 'javascript'>alert(" + ex.ToString() + ")</script>";
            Response.Write(strEx);
        }
        finally
        {
            oImage.Dispose();
            tImage.Dispose();
            graphic.Dispose();

        }
    }

posted @ 2007-09-05 16:44  zijinguang  阅读(239)  评论(0编辑  收藏  举报