用一个页面GetThumbnail.aspx制作缩略图,用一个页面ListImage.aspx使用datalist控件的项模板中的hyperlink控件的NavigateUrl属性设置原始图的导航,ImageUrl属性设置为缩略图,ToolTip属性设置提示文字。
缩略图页面GetThumbnail.aspx的代码:
const int MaxLength=150; //最大长度
private void Page_Load(object sender, System.EventArgs e)
{
if (Request.QueryString["filename"] != null)
{
//取得原图
string filename=Request.QueryString["filename"];
Bitmap bmpOld= new Bitmap(Server.MapPath("images/" + filename));
//计算缩小比例
double d1;
if (bmpOld.Height>bmpOld.Width)
d1=(double)(MaxLength/(double)bmpOld.Width);
else
d1=(double)(MaxLength/(double)bmpOld.Height);
//产生缩图
Bitmap bmpThumb= new Bitmap(bmpOld,(int)(bmpOld.Width*d1),(int)(bmpOld.Height*d1));
// 清除缓冲
Response.Clear();
//生成图片
bmpThumb.Save(Response.OutputStream, ImageFormat.Jpeg);
Response.End();
//释放资源
bmpThumb.Dispose();
bmpOld.Dispose();
}
}
展示图片页面ListImage.aspx中的部分代码:
页面部分:
<ItemTemplate>
<asp:HyperLink id=HyperLink1 Target="_blank" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.filename", "images/{0}") %>' Runat="server" ImageUrl='<%# DataBinder.Eval(Container, "DataItem.filename", "GetThumbnail.aspx?filename={0}") %>' ToolTip='<%# DataBinder.Eval(Container, "DataItem.filename", "文件名称:{0}")+DataBinder.Eval(Container, "DataItem.size", "\n文件尺寸:{0}") %>'>
</asp:HyperLink>
<asp:Button id="Button1" onclick="HHH" runat="server" Text="Button"></asp:Button>
</ItemTemplate>
代码部分:
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
//获取文件名称
string[] files=Directory.GetFiles(Server.MapPath("images"));
//建立数据表
DataTable dt=new DataTable();
dt.Columns.Add("filename");
dt.Columns.Add("size");
foreach (string s in files)
{
DataRow dr=dt.NewRow();
FileInfo f=new FileInfo(s);
dr["filename"]=f.Name;
dr["size"]=f.Length;
dt.Rows.Add(dr);
}
//绑定显示
this.DataList1.DataSource=dt;
this.DataList1.DataBind();
}
}