图片重新定义大小保存……

public class UploadPic
    
{
        
public UploadPic()
        
{
        }


        
/// <summary>
        
/// 保存的方法
        
/// </summary>
        
/// <param name="_file">上传文件的方法</param>
        
/// <param name="_compress">是否压缩图片,true的时候_minwidth和_minhight属性才有效</param>
        
/// <param name="_saveOriginally">是否保存原始图片</param>
        
/// <param name="_path">上传的路径</param>
        
/// <param name="_minwidth">最小宽度(压缩的时候才有用)</param>
        
/// <param name="_minhight">最小高度(压缩的时候才有用)</param>
        
/// <returns>错误返回"",否则返回文件名</returns>

        public string Save(HtmlInputFile _file,bool _compress,bool _saveOriginally,string _path,int _minwidth,int _minhight)
        
{
            
string strFileName = "";

            
//先检查文件名
            strFileName = CheckFile(_file);

            
if(strFileName == "")
                
return "";
            
else
                strFileName 
= composeFileName(strFileName);//文件名通过检查后再组合成新文件名。
    
            
try
            
{
                System.Web.UI.Page MyPage 
= new Page();
                
//如果不压缩,或者 压缩并且要求保存原文件,则保存原图片
                if(!_compress || (_compress && _saveOriginally))
                    _file.PostedFile.SaveAs(MyPage.Server.MapPath(_path 
+ "max" + strFileName));
    
                
//如果压缩,则保存压缩后的小图片
                if(_compress)
                
{
                    System.Drawing.Image NewPic 
= System.Drawing.Image.FromStream(_file.PostedFile.InputStream);
                    
                    
int intMaxHight = NewPic.Height;
                    
int intMaxWidth = NewPic.Width;

                    
if(intMaxHight <= _minhight && intMaxWidth <= _minwidth)
                    
{
                        _minhight 
= intMaxHight;
                        _minwidth 
= intMaxWidth;
                    }

                    
else
                    
{
                        
if(intMaxWidth>intMaxHight)
                        
{
                            
int tmpheight =(int)((double)intMaxHight/(double)intMaxWidth*(double)_minwidth);
                            _minhight 
= tmpheight > _minhight ? _minhight : tmpheight;
                        }

                        
else
                        
{
                            
int tmpwidth =(int)((double)intMaxWidth/(double)intMaxHight*(double)_minhight);
                            _minwidth 
= tmpwidth > _minwidth ? _minwidth : tmpwidth;
                        }

                    }

                    System.Drawing.Image thumimg 
= null;
                    System.Drawing.Image.GetThumbnailImageAbort callb 
= new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);   
                    thumimg 
= NewPic.GetThumbnailImage(_minwidth,_minhight,callb,IntPtr.Zero); 
                    thumimg.Save(MyPage.Server.MapPath(_path 
+ "min" + strFileName));    
                }

            }

            
catch
            
{
                strFileName
="";
            }

            
            
return strFileName;
        }


        
/// <summary>
        
/// 组合文件名
        
/// </summary>
        
/// <param name="_filename">原文件名</param>
        
/// <returns>组合后的文件名</returns>

        private string composeFileName(string _filename)
        
{    
            
//组合文件名,文件名前加日期
            string date = DateTime.Now.ToString();
            date 
= date.Replace(":","");
            date 
= date.Replace(" ","");
            date 
= date.Replace("-","");

            
return date + "_"+ _filename;
        }


        
/// <summary>
        
/// 检查文件格式
        
/// </summary>
        
/// <param name="_file">文件格式,这里定义的合法的是.jpg .gif两种</param>
        
/// <returns>错误返回“”,正确返回文件名filename</returns>

        private string CheckFile(HtmlInputFile _file)
        
{
            
if(_file.PostedFile.ContentLength == 0)
                
return "";

            
string _strFile = _file.Value;
            
string StrFileName = _strFile.Substring(_file.PostedFile.FileName.LastIndexOf(@"\")+1);
            
string fileFormater = _strFile.Substring(_file.PostedFile.FileName.LastIndexOf("."));
            
            
switch(fileFormater.ToLower())
            
{
                
case ".jpg":
                    
return StrFileName;
                
case ".gif":
                    
return StrFileName;
                
default:
                    
return "";
            }

        }


        
private bool ThumbnailCallback()
        
{
            
return false;
        }

    }
posted on 2005-08-30 17:21  Michael J  阅读(390)  评论(0)    收藏  举报