using System;
using System.Web;
using System.Web.UI;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Text.RegularExpressions;

namespace BaseProject.Classes.Util
{
    public class UpLoad
    {
        /// <summary>
        /// 指定路径 图片大小
        /// </summary>
        /// <param name="dir"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <returns></returns>
        public string GetSqlFile(string dir, int width, int height)
        {
            string sqlfile = "";
            string path = HttpContext.Current.Request.PhysicalApplicationPath.ToString() + "upload/";
            path += dir;
            if (Directory.Exists(path))
            {

            }
            else
            {
                Directory.CreateDirectory(path);
            }
            if (Directory.Exists(path + "/small"))
            {
            }
            else
            {
                Directory.CreateDirectory(path + "/small");
            }
            HttpFileCollection files = HttpContext.Current.Request.Files;
            if (files[0].FileName.ToString().Length > 0)
            {
              
                string filename = files[0].FileName.ToString();
                string datestr = new StringOperate().ConvertChineseCharacterToSpelling(Regex.Replace(filename, "[^\\u4e00-\\u9fa5]", ""))+DateTime.Now.ToString("yyyyMMddHmmfff") ;
                string ext = filename.Substring(filename.LastIndexOf(".")).ToLower();
                if (ext != ".bmp" && ext != ".jpg" && ext != ".gif" && ext != ".jpeg")
                {
                    HttpContext.Current.Response.Write("<script>alert('上传的文件不是.gif,jpg,jpeg,bmp格式')</script>");
                    return "";
                }
                files[0].SaveAs(path + "/" + datestr + ext);
                #region 生成小图
                string originalFilename = path + "/" + datestr + ext;
              
                //缩小的倍数
                int iScale = 1;
                //从文件取得图片对象
                Image image = null;
                try
                {
                    image = Image.FromFile(originalFilename);
                }
                catch
                {
                    //
                    try
                    {
                        File.Delete(originalFilename);
                        image.Dispose();

                    }
                    catch
                    {
                    }
                    HttpContext.Current.Response.Write("<script>alert('上传的文件不是.gif,jpg,jpeg,bmp图片的标准格式格式')</script>");
                    return "";

                }
                int hi = 0;
                int wi = 0;
                wi = width;
                hi = height;
                Size size = new Size(wi, hi);
                //新建一个bmp图片
                Image bitmap = new Bitmap(size.Width, size.Height);
                //新建一个画板
                Graphics g = Graphics.FromImage(bitmap);
                //设置高质量插值法
                g.InterpolationMode = InterpolationMode.High;
                //设置高质量,低速度呈现平滑程度
                g.SmoothingMode = SmoothingMode.HighQuality;
                //清空一下画布
                g.Clear(Color.Blue);
                //在指定位置画图
                g.DrawImage(image, new Rectangle(0, 0, bitmap.Width, bitmap.Height), new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel);
                if (ext == ".jpg" || ext == ".jpeg")
                    bitmap.Save(path + "/small/" + datestr + ext, ImageFormat.Jpeg);
                if (ext == ".gif")
                    bitmap.Save(path + "/small/" + datestr + ext, ImageFormat.Gif);
                if (ext == ".bmp")
                    bitmap.Save(path + "/small/" + datestr + ext, ImageFormat.Bmp);
                image.Dispose();
                bitmap.Dispose();
                g.Dispose();
                #endregion
                sqlfile = datestr + ext;

                try
                {
                    image.Dispose();
                    bitmap.Dispose();
                    g.Dispose();
                }
                catch (Exception ex)
                {
                    string exc = ex.Message.ToString();
                    HttpContext.Current.Response.Write("<script>alert('" + exc + "');</script>");
                }
            }
            else
            {
                sqlfile = "";
            }
            return sqlfile;
        }
        /// <summary>
        /// 指定路径 图片大小
        /// </summary>
        /// <param name="dir"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <returns></returns>
        public string GetSqlFileSmallImage(string dir, int width, int height)
        {
            string sqlfile = "";
            string path = HttpContext.Current.Request.PhysicalApplicationPath.ToString() + "upload/";
            path += dir;
            if (Directory.Exists(path))
            {

            }
            else
            {
                Directory.CreateDirectory(path);
            }
            if (Directory.Exists(path + "/small"))
            {
            }
            else
            {
                Directory.CreateDirectory(path + "/small");
            }
            HttpFileCollection files = HttpContext.Current.Request.Files;
            if (files[0].FileName.ToString().Length > 0)
            {
                string filename = files[0].FileName.ToString();
                string tempFileName = filename.Substring(filename.LastIndexOf('\\') + 1, filename.LastIndexOf('.') - (filename.LastIndexOf('\\') + 1));
                string datestr = new StringOperate().ConvertChineseCharacterToSpelling(Regex.Replace(filename, "[^\\u4e00-\\u9fa5]", "")) + DateTime.Now.ToString("yyyyMMddHmmfff");
                string ext = filename.Substring(filename.LastIndexOf(".")).ToLower();
                if (ext != ".bmp" && ext != ".jpg" && ext != ".gif" && ext != ".jpeg")
                {
                    HttpContext.Current.Response.Write("<script>alert('上传的文件不是.gif,jpg,jpeg,bmp格式')</script>");
                    return "";
                }
                files[0].SaveAs(path + "/" + datestr + ext);
                #region 生成小图
                string originalFilename = path + "/" + datestr + ext;
              
                //缩小的倍数
                //int iScale = 1;
                //从文件取得图片对象
                Image image = null;
                try
                {
                    image = Image.FromFile(originalFilename);
                }
                catch
                {
                    //
                    try
                    {
                        File.Delete(originalFilename);
                        image.Dispose();

                    }
                    catch
                    {
                    }
                    HttpContext.Current.Response.Write("<script>alert('上传的文件不是.gif,jpg,jpeg,bmp图片的标准格式格式')</script>");
                    return "";

                }
                int hi = 0;
                int wi = 0;
                wi = width;
                hi = height;
                Size size = new Size(wi, hi);
                //新建一个bmp图片
                Image bitmap = new Bitmap(size.Width, size.Height);
                //新建一个画板
                Graphics g = Graphics.FromImage(bitmap);
                //设置高质量插值法
                g.InterpolationMode = InterpolationMode.High;
                //设置高质量,低速度呈现平滑程度
                g.SmoothingMode = SmoothingMode.HighQuality;
                //清空一下画布
                g.Clear(Color.Blue);
                //在指定位置画图
                g.DrawImage(image, new Rectangle(0, 0, bitmap.Width, bitmap.Height), new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel);
                if (ext == ".jpg" || ext == ".jpeg")
                    bitmap.Save(path + "/small/" + datestr + ext, ImageFormat.Jpeg);
                if (ext == ".gif")
                    bitmap.Save(path + "/small/" + datestr + ext, ImageFormat.Gif);
                if (ext == ".bmp")
                    bitmap.Save(path + "/small/" + datestr + ext, ImageFormat.Bmp);
                image.Dispose();
                bitmap.Dispose();
                g.Dispose();
                #endregion
                sqlfile = datestr + ext;

                try
                {
                    image.Dispose();
                    bitmap.Dispose();
                    g.Dispose();
                    System.IO.File.Delete(path + "/" + datestr + ext);
                }
                catch (Exception ex)
                {
                    string exc = ex.Message.ToString();
                    HttpContext.Current.Response.Write("<script>alert('" + exc + "');</script>");
                }
            }
            else
            {
                sqlfile = "";
            }
            return sqlfile;
        }

    }
}

posted on 2009-04-02 18:36  bestsaler  阅读(271)  评论(0编辑  收藏  举报