您的位置:首页 > 编程语言 > ASP

asp.net生成缩略图并支持文件上传实现代码

2013-07-25 11:15 786 查看
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Drawing; 
using System.IO; 
namespace web三层 

/// <summary> 
/// 显示请求图片的缩略图,以宽度100像素为最大单位 
/// </summary> 
public class imgSmall : IHttpHandler 

//图片所在文件夹 
static string picturesPath = @"d:wordpictures"; 
public void ProcessRequest(HttpContext context) 

context.Response.ContentType = "image/jpeg"; 
//获取到传递过来的img字符串,比如 
//http://localhost:5002/imgSmall.ashx?img=abacus8.jpg这种 
string img = context.Request.Params["img"]; 
string path = picturesPath + img; 
//如果文件存在才会去读取,减少使用try,catch,提高程序性能 
if (File.Exists(path)) 

//载入这个图片 
Image big = Image.FromFile(path); 
//如果可以获取到文件,才会执行下面的代码 
if (big != null) 

//设定最大的宽度,可以修改来生成更小的缩略图 
int newWidth = 100; 
//根据图片的宽高比来生成一个位图 
Bitmap bitmap = new Bitmap(newWidth, newWidth * big.Height / big.Width); 
//根据图板来创建一个图画 
Graphics g = Graphics.FromImage(bitmap); 
using (g) 

//将大图big画到自己定义的小图中bitmap 
g.DrawImage(big, 0, 0, bitmap.Width, bitmap.Height); 
//直接将处理好的位图保存到响应输出流中,格式为jpeg! 
bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); 



else 

//否则就发送一个文件不存在的信息到浏览器 
context.Response.ContentType = "text/html"; 
context.Response.Write("文件不存在"); 
//或者发送一个文件不存在的图片 
//context.Response.WriteFile("todo此处修改为图片所在路径"); 


public bool IsReusable 

get 

return false; 



}

实例,可以把图片上传后再生成缩略图

<script language="VB" runat="server"> 

Sub UploadFile(sender As Object, e As EventArgs)

If FileUp.PostedFile.ContentLength = 0 Then 

FileInfo.Visible = False 

Exit Sub 

Else 

FileInfo.Visible = True 

FDisplay1.Visible = True 

End If

FSize.Text ="上传文件大小"+ CStr(FileUp.PostedFile.ContentLength/1024)+"KB" 

FName.Text = "已上传文件名:"+FileUp.PostedFile.FileName+"<br>"+FName.Text

’写入数据库 

on error resume next 

dim myconn as sqlconnection 

dim mycomm as sqlcommand 

dim sql as string 

dim id as integer 

Dim image,anewimage As System.Drawing.Image 

dim width,height,newwidth,newheight as integer 

Dim callb As System.Drawing.Image.GetThumbnailImageAbort 

myConn=New sqlconnection(ConfigurationSettings.AppSettings("数据库")) 

myconn.open() 

sql="insert into picture (姓名,班级,介绍,属性) values (’"&request.cookies("dgxyl").values("dgxylname")&"’,’"&request.cookies("dgxyl").values("dgxylbj")&"’,’"&trim(request("TextBox1"))&"’,’"&request("r1")&"’)"

Mycomm=New sqlcommand(sql,myconn) 

mycomm.executenonquery() 

myconn.close()

Dim myCommand As New SqlCommand("select top 1 id from picture order by id desc", myConn) 

myCommand.Connection.Open() 

Dim myReader As SqlDataReader=mycommand.executereader() 

if myReader.Read() then 

id=myReader("id") 

end if 

myconn.close() 

’保存图片 

FileUp.PostedFile.SaveAs( Server.MapPath("classpic")&cstr(id)&".jpg" ) 

’生成缩略图 

image=System.Drawing.Image.FromFile(Server.MapPath("/classpic/"+cstr(id)+".jpg")) 

width=image.Width 

height=image.height 

if width>height then 

newwidth=250 

newheight=image.height/image.Width*newwidth 

else 

newheight=250 

newwidth=image.Width/image.height*newheight 

end if 

response.write("id="+cstr(id)+"width="+cstr(Width)+";height="+cstr(height)+"  ") 

response.write("newwidth="+cstr(newwidth)+";newheight="+cstr(newheight)+"<br>")

aNewImage=image.GetThumbnailImage(newwidth,newheight,callb,new System.IntPtr()) 

aNewImage.Save(Server.MapPath("/smallpic/"+cstr(id)+".jpg")) 

image.Dispose()

Dim FileSplit() As String = Split( FileUp.PostedFile.FileName, "" ) 

Dim FileName As String = FileSplit(FileSplit.Length-1) 

Dim Exts() As String = Split( FileName, "." ) 

Dim Ext As String = LCase(Exts(Exts.Length-1))

FDisplay.Text = "<A Target=’_blank’ HREF=’/classpic/"&cstr(id)&".jpg"& "’>查看上传文件</A>" 

FDisplay1.text="<a href=’/picture/default.asp?bj="&cstr(request.cookies("dgxyl").values("dgxylbj")) &"’>返回</a>" 

End Sub 

</script> 

<SCRIPT language=JavaScript> 

<!-- 

var requestsubmitted=false; 

function guestbook_Validator(theForm) 



//检查是否从新提交 

if (requestsubmitted==true){ 

  alert("你已经提交了留言,请等待服务器应答!"); 

  return(false); 

 } 

requestsubmitted=true;

return (true); 



//--> 

</SCRIPT> 

<Html> 

<Body BgColor=White> 

<H3 align="center">请正确填写下面各项</h3> 

<Hr></H3> 

<Div id="FileInfo" Visible="False" runat="server"> 

 <Asp:Label id="FSize" runat="server"/><br> 

 <Asp:Label id="FName" runat="server"/><br> 

<Asp:Label id="FDisplay" runat="server"/> 

 <Asp:Label id="FDisplay1" runat="server"/> 

</Div> 

<Form Enctype="multipart/form-data" onsubmit="return guestbook_Validator(this)" runat="server"> 

上传文件 

<Input Type="File" id="FileUp" runat="server" size="20"><br> 

图片属性:<input type="radio" value="<%=request.cookies("dgxyl").values("dgxylbj")%>" name="R1" checked>本班<input type="radio" value="全校" name="R1">全校(本班则只在本班显示,全校则在全校显示)<P> 

图片说明:<br> 

<asp:TextBox id="TextBox1" runat="server" Width="233px" Height="141px"> 

</asp:TextBox> 

        <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="请输入图片说明"> 

</asp:RequiredFieldValidator><br> 

<Asp:button id="Upload" Text="上传图片" runat="server"/> 

</form> 

<Hr> 

<p>注意:</p> 

<ol> 

  <li><b>严禁上传污染环境的照片,否则账号将被删除!</b></li> 

  <li><font color="#808000"><b>请详细填写照片说明,图片说明不详细将会被视为乱传图片,将会被删除!</b></font></li> 

</ol>

</Body> 

</Html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: