C#圖片處理

來源:互聯網
上載者:User
<%@   Page   Debug   ="true"   Language="c#"   %>  
  <%@   Import   Namespace="System.IO"   %>  
  <%@   Import   Namespace="System.Data"   %>  
  <%@   Import   Namespace="System.Web"   %>  
  <%@   Import   Namespace="System.Data.SqlClient"   %>  
  <html>  
  <!--此程式由長沙鐵路公安處彭永爽開發,著作權,不得複製-->  
  <head>  
  <script   language="c#"   runat="server">    
   
  //頁面載入事件  
  public   void   Page_Load(object   sender,System.EventArgs   e)  
  {    
   
  //定義圖片標誌  
  string   pys_pic;  
  pys_pic="";  
   
  //定義檔案夾名稱  
  string   pys_dir;  
  pys_dir=DateTime.Now.Year.ToString();  
   
  //定義檔案名稱前部分,以免上傳檔案因檔案名稱重複而覆蓋  
  string   pys_filename;    
   
  //如果用戶端已經上傳檔案,則儲存    
  if   (!IsPostBack)  
  {  
  LiuXi.Text="等待上傳";  
  }  
  else  
  {  
  //檢查是否有文章id,如果沒有,則處理  
  if   (Request["pysid"]==null   |   Request["pysid"]=="")  
  {  
  strStatus.Text="<font   color=red>發生錯誤,您沒有從正當途徑進入該頁面,請關閉本頁面!</font>";  
  }  
  else  
  {  
  //遍曆File表單元素  
  System.Web.HttpFileCollection   files=System.Web.HttpContext.Current.Request.Files;  
  //狀態資訊  
  System.Text.StringBuilder   strMsg=new   System.Text.StringBuilder("<font   color=red>上傳的檔案資訊分別為:</font><hr   size=1   color=blue>");  
  int   fileCount;  
  int   filecount=files.Count;    
  //儲存上傳圖片的用戶端地址,以便檢測上傳圖片的大小  
  string   imgPath;    
  //檢查上傳檔案是否圖片  
  string   pys_type;  
  //儲存圖片產生縮圖的寬度  
  int   pys_width;    
  try  
  {  
  //資料庫連接字串  
  string   ConnectionString="server=(local);database=csc;uid=forcool;pwd=";  
   
  string   Sql="select   *   from   upfile";    
   
   
  //建立SqlConnection對象  
  SqlConnection   thisConnection=new   SqlConnection(ConnectionString);  
  //建立DataAdaper對象並初始化  
  SqlDataAdapter   adapter=new   SqlDataAdapter(Sql,thisConnection);  
   
   
   
   
  //建立DataSet對象  
  DataSet   data=new   DataSet();  
   
   
  //建立SqlCommandBuilder對象,並和SqlDataAdapter關聯  
  SqlCommandBuilder   builder=new   SqlCommandBuilder(adapter);  
   
   
  adapter.Fill(data,"upfile");  
   
   
  for(fileCount=0;fileCount<files.Count;fileCount++)  
  {  
  //定義訪問用戶端上傳檔案的個數  
  System.Web.HttpPostedFile   postedFile=files[fileCount];  
  string   fileName,fileExtension;  
  //取得上傳的檔案名稱  
  fileName=System.IO.Path.GetFileName(postedFile.FileName);  
  if   (fileName!=String.Empty)  
  {  
  //取得副檔名  
  fileExtension=System.IO.Path.GetExtension(fileName);  
  //上傳的檔案資訊  
  strMsg.Append("<font   color=red><b>"+(fileCount+1)+".</b></font>");  
  strMsg.Append("上傳的檔案類型:"+postedFile.ContentType.ToString()+"<br>");  
  strMsg.Append("用戶端檔案地址:"+postedFile.FileName+"<br>");  
  strMsg.Append("上傳檔案的檔案名稱:"+fileName+"<br>");  
  strMsg.Append("上傳檔案的副檔名:"+fileExtension+"<br>");  
  strMsg.Append("上傳檔案的大小:"+postedFile.ContentLength+"<br>");  
   
   
  //按目前時間(精確到毫秒)給檔案命名,不取中文名,避免編碼錯誤而無法下載或顯示  
  pys_filename=DateTime.Now.Year.ToString()+DateTime.Now.Month.ToString()+DateTime.Now.Day.ToString()+DateTime.Now.Hour.ToString()+DateTime.Now.Minute.ToString()+DateTime.Now.Second.ToString()+DateTime.Now.Millisecond.ToString();  
   
  //建立隨機數對象  
  Random   rnd=new   Random();  
  //調用Next方法產生隨機數  
  pys_filename+=rnd.Next(1,100000).ToString();  
   
  pys_filename+="-";  
  pys_filename+=fileCount;  
  pys_filename=Request.QueryString["pysid"]+"-"+pys_filename;  
   
  pys_type=fileExtension;  
  pys_type=pys_type.ToLower();  
   
  //給縮圖寬度賦初值  
  pys_width=0;  
  //如果是圖片則檢查大小,如果圖片過大則產生縮圖  
  if   (pys_type==".jpg"   |   pys_type==".gif"   |   pys_type==".bmp"   |   pys_type==".png")  
  {  
  pys_pic="是";  
  //取得上傳圖片的路徑  
  imgPath=postedFile.FileName;  
  //針對選擇的圖片建立Image對象  
  System.Drawing.Image   image=System.Drawing.Image.FromFile(imgPath);  
  //使用Image對象的Height   and   Width屬性取得圖片的高度和寬度  
  strMsg.Append("上傳圖片的高度:"+image.Height.ToString()+"<br>");  
  strMsg.Append("上傳圖片的寬度:"+image.Width.ToString()+"<br>");  
  //如果上傳的圖片超過了100KB  
   
  if   (postedFile.ContentLength>100000   ||   image.Width>400)    
  {  
  //產生縮圖  
  System.Drawing.Image.GetThumbnailImageAbort   callb=null;  
  pys_width=(image.Height)*200/(image.Width);  
  System.Drawing.Image   newimage=image.GetThumbnailImage(200,pys_width,callb,new   System.IntPtr());  
  //儲存縮圖  
  newimage.Save(Server.MapPath(""+pys_dir+"\\small-")+pys_filename+fileExtension);  
  //釋放newimage對象佔用的資源    
   
  //對圖形壓縮處理  
  pys_width=(image.Height)*400/(image.Width);    
  newimage=image.GetThumbnailImage(400,pys_width,callb,new   System.IntPtr());  
  //儲存壓縮圖  
  newimage.Save(Server.MapPath(""+pys_dir+"\\")+pys_filename+fileExtension);  
  //釋放newimage對象佔用的資源  
  newimage.Dispose();  
  strMsg.Append("上傳的圖片大小超過了100KB,為了不影響撥接單位的瀏覽速度,已對該圖產生縮圖。<br>");  
  }  
  //釋放image佔用的資源  
  image.Dispose();  
  }  
   
   
  strMsg.Append("<hr   size=1   color=blue>");  
   
   
  //在DataSet中添加上傳的檔案資訊  
  DataRow   newRow=data.Tables["upfile"].NewRow();  
  newRow["pysid"]=Request["pysid"];  
  newRow["檔案名稱"]=fileName;  
  newRow["檔案類型"]=fileExtension;  
  newRow["檔案大小"]=postedFile.ContentLength;    
  newRow["檔案位置"]=pys_dir+"/"+pys_filename+fileExtension;    
  if   (pys_width>0)  
  {  
  newRow["縮圖位置"]=pys_dir+"/small-"+pys_filename+fileExtension;    
  }  
  data.Tables["upfile"].Rows.Add(newRow); 


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.