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);