.net 图片上传

方法一:  
002     /// asp.net上传图片并生成缩略图    
003     /// </summary>    
004     /// <param name="upImage">HtmlInputFile控件</param>    
005     /// <param name="sSavePath">保存的路径,些为相对服务器路径的下的文件夹</param>    
006     /// <param name="sThumbExtension">缩略图的thumb</param>    
007     /// <param name="intThumbWidth">生成缩略图的宽度</param>    
008     /// <param name="intThumbHeight">生成缩略图的高度</param>    
009     /// <returns>缩略图名称</returns>    
服务器端控件:fileupload  
public string UpLoadImage(FileUpload fileupload,string sSavePath,string sThumbExtension,int intThumbWidth,int intThumbHeight)   
public string UpLoadImage(HtmlInputFile upImage,string sSavePath,string sThumbExtension,int intThumbWidth,int intThumbHeight)   
     {   
         string sThumbFile ="";   
         string sFilename ="";          
         if(upImage.PostedFile !=null)   
         {   
             HttpPostedFile myFile = upImage.PostedFile;   
             int nFileLen = myFile.ContentLength;   
             if(nFileLen == 0)   
                 return"没有选择上传图片";              
             //获取upImage选择文件的扩展名    
             string extendName = System.IO.Path.GetExtension(myFile.FileName).ToLower();   
             //判断是否为图片格式    
             if(extendName !=".jpg"&& extendName !=".jpge"&& extendName !=".gif"&& extendName !=".bmp"&& extendName !=".png")   
                 return"图片格式不正确";   
                 
             byte[] myData =new Byte[nFileLen];   
             myFile.InputStream.Read(myData,0 , nFileLen);  
             sFilename = System.IO.Path.GetFileName(myFile.FileName);   
             int file_append = 0;   
             //检查当前文件夹下是否有同名图片,有则在文件名+    
             while(System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename)))   
             {   
                 file_append++;   
                 sFilename = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)   
                     + file_append.ToString() + extendName;   
             }   
             System.IO.FileStream newFile   
                 =new System.IO.FileStream(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename),   
                 System.IO.FileMode.Create, System.IO.FileAccess.Write);   
             newFile.Write(myData,0 , myData.Length);   
             newFile.Close();  
             //以上为上传原图   
             try   
             {   
                 //原图加载    
                 using(System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename)))   
                 {   
                     //原图宽度和高度    
                     int width = sourceImage.Width;   
                     int height = sourceImage.Height;   
                     int smallWidth;   
                     int smallHeight;  
                     //获取第一张绘制图的大小,(比较 原图的宽/缩略图的宽 和 原图的高/缩略图的高)    
                     if(((decimal)width) / height <= ((decimal)intThumbWidth) / intThumbHeight)   
                     {   
                         smallWidth = intThumbWidth;   
                         smallHeight = intThumbWidth * height / width;   
                     }   
                     else   
                     {   
                         smallWidth = intThumbHeight * width / height;   
                         smallHeight = intThumbHeight;   
                     }  
                     //判断缩略图在当前文件夹下是否同名称文件存在    
                     file_append =0 ;   
                     sThumbFile = sThumbExtension + System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) + extendName;  
                     while(System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sThumbFile)))   
                     {   
                         file_append++;   
                         sThumbFile = sThumbExtension + System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) +   
                             file_append.ToString() + extendName;   
                     }   
                     //缩略图保存的绝对路径    
                     string smallImagePath = System.Web.HttpContext.Current.Server.MapPath(sSavePath) + sThumbFile;  
                     //新建一个图板,以最小等比例压缩大小绘制原图    
                     using(System.Drawing.Image bitmap =new System.Drawing.Bitmap(smallWidth, smallHeight))   
                     {   
                         //绘制中间图    
                         using(System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))   
                         {   
                             //高清,平滑    
                             g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;   
                             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;   
                             g.Clear(Color.Black);   
                             g.DrawImage(   
                             sourceImage,   
                             new System.Drawing.Rectangle(0, 0, smallWidth, smallHeight),   
                             new System.Drawing.Rectangle(0,0 , width, height),   
                             System.Drawing.GraphicsUnit.Pixel   
                             );   
                         }   
                         //新建一个图板,以缩略图大小绘制中间图    
                         using(System.Drawing.Image bitmap1 =new System.Drawing.Bitmap(intThumbWidth, intThumbHeight))   
                         {   
                             //绘制缩略图    
                             using(System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap1))   
                             {   
                                 //高清,平滑    
                                 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;   
                                 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;   
                                 g.Clear(Color.Black);   
                                 int lwidth = (smallWidth - intThumbWidth) /2 ;   
                                 int bheight = (smallHeight - intThumbHeight) /2 ;   
                                 g.DrawImage(bitmap,new Rectangle(0,0 , intThumbWidth, intThumbHeight), lwidth, bheight, intThumbWidth, intThumbHeight, GraphicsUnit.Pixel);   
                                 g.Dispose();   
                                 bitmap.Save(smallImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);   
                             }   
                         }   
                     }   
                 }   
             }   
             catch   
             {   
                 //出错则删除    
                 System.IO.File.Delete(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename));   
                 return"图片格式不正确";   
             }   
             //返回缩略图名称    
             return sThumbFile;   
         }   
         return"没有选择图片";   
     }  
   
   
方法二:  
        /// <summary>   
        /// 图片上传,带缩略图自定义处理   
        /// </summary>   
        /// <param name="fileupload">上传控件</param>   
        /// <param name="pictureDirectoryAbsolutePath">站点下绝对目录路径 eg: "/pics/a/"</param>   
        /// <param name="newPictureName">新命名图片(不带格式部分,格式维持原来的)</param>   
        /// <param name="supportPictureType">eg: "|gif|jpg|png",如果为空,默认支持以上三种</param>   
        /// <param name="message">返回消息</param>   
        /// <param name="isCreateDefaultThumb">是否立即生成缩略图</param>   
        public static bool PictrueUpload(FileUpload fileupload, string pictureDirectoryAbsolutePath, string newPictureName, string supportPictureType,  
                out string pictureAbsolutePath, out string message,  
                bool isCreateDefaultThumb, string thumbPhysicalFullPath, int thumbWidth, int thumbHeight, out string thumbAbsolutePath)  
        {  
            message = "图片上传成功";  
            pictureAbsolutePath = "";  
            thumbAbsolutePath = "";  
            #region 参数验证   
            string picturePhysicalFullPath = "";  
            if (string.IsNullOrEmpty(fileupload.FileName))  
            {  
                message = "请选择待上传图片";  
                return false; ;  
            }  
            if (String.IsNullOrEmpty(pictureDirectoryAbsolutePath))  
            {  
                message = "pictureDirectoryAbsolutePath参数不能为空";  
                return false;  
            }  
            if (String.IsNullOrEmpty(newPictureName))  
            {  
                message = "newPictureName参数不能为空";  
                return false;  
            }  
            #endregion   
            //存储目录创建   
            string pictureDirectoryPhysicalPath = HttpContext.Current.Server.MapPath(pictureDirectoryAbsolutePath);  
            if (!Directory.Exists(pictureDirectoryPhysicalPath))  
            {  
                Directory.CreateDirectory(pictureDirectoryPhysicalPath);  
            }  
            string fileName = fileupload.FileName.Trim();  
            string typeName = fileName.Substring(fileName.LastIndexOf('.') + 1).ToLower();  
            //上传图片格式验证   
            if (!PictureSupportFormatToValidate(typeName, supportPictureType, out message))  
            {  
                return false;  
            }  
            //原始图片上传后的物理地址   
            picturePhysicalFullPath = pictureDirectoryPhysicalPath + newPictureName + "." + typeName;  
            //原始图片上传   
            fileupload.SaveAs(picturePhysicalFullPath);  
            //返回的图片绝对地址   
            pictureAbsolutePath = pictureDirectoryAbsolutePath + newPictureName + "." + typeName;  
            #region 缩略图处理   
            //缩略图生成处理   
            if (isCreateDefaultThumb)  
            {  
                if (String.IsNullOrEmpty(thumbPhysicalFullPath))  
                {  
                    string thumbDirectoryPhysicalPath = String.Format("{0}thumb/", pictureDirectoryPhysicalPath);  
                    //缩略图目录创建   
                    if (!Directory.Exists(thumbDirectoryPhysicalPath))  
                    {  
                        Directory.CreateDirectory(thumbDirectoryPhysicalPath);  
                    }  
                    //缩略图存储地址   
                    thumbPhysicalFullPath = String.Format("{0}{1}.jpg", thumbDirectoryPhysicalPath, newPictureName);  
                }  
                using (StreamReader sr = new StreamReader(picturePhysicalFullPath))  
                {  
                    CustomPictureManager.ThumbAsJPG(sr.BaseStream, thumbPhysicalFullPath, thumbWidth, thumbHeight);  
                    thumbAbsolutePath = pictureDirectoryAbsolutePath + "thumb/" + newPictureName + "." + typeName;  
                }  
            }  
            #endregion 缩略图处理   
            return true;  
        }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值