多页的TIFF图片在aspx页面分页显示

时间:2023-03-08 17:42:52

一、逻辑实现:将数据库中的二进制TIFF图片读出并分页显示在页面上。

1.显示界面

 public FrameDimension MyGuid;
public static int MyPos = ;
public static int totalPage = ;
public static MemoryStream stream;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string username = Request.QueryString["username"];
string sql = string.Format("select top(1) image from Image_Table where image_code=( select new_sjbh from new_ksy_dzpz where new_ksy_dzpzid='{0}' ) ", username);
DataTable dt = SqlHelper.GetTable(sql);
if (dt.Rows.Count > )
{
Image1.ImageUrl = "ShowImage.aspx?username=" + username + "&pagecount=0";
stream = new MemoryStream((byte[])dt.Rows[]["image"]);
// Bitmap bt = new Bitmap(Server.MapPath(Image1.ImageUrl));
Bitmap bt = new Bitmap(stream);
Guid gud = (Guid)bt.FrameDimensionsList.GetValue();
FrameDimension fds = new FrameDimension(gud);
totalPage = bt.GetFrameCount(fds);//获取页数
this.LabelPageCount.Text = totalPage.ToString();
this.LabelCurrentPage.Text = "";
if (totalPage == )
{
this.LinkButtonPreviousPage.Enabled = false;//上一页只读
this.LinkButtonFirstPage.Enabled = false;//首页只读
this.LinkButtonNextPage.Enabled = false;//下一页只读
this.LinkButtonLastPage.Enabled = false;//尾页只读
this.btnGo.Enabled = false; }
}
this.LinkButtonPreviousPage.Enabled = false;//上一页只读
this.LinkButtonFirstPage.Enabled = false;//首页只读
} }
//下载
protected void Button1_Click(object sender, EventArgs e)
{
string username = Request.QueryString["username"];
string sql = string.Format("select top(1) image,name from Image_Table where image_code=( select new_sjbh from new_ksy_dzpz where new_ksy_dzpzid='{0}' ) ", username);
DataTable dt = SqlHelper.GetTable(sql);
if (dt.Rows.Count > )
{
byte[] bytes = (byte[])dt.Rows[]["image"];
//下载单个凭证
Response.Buffer = true;
Page.Response.Clear();//清除缓冲区所有内容
Page.Response.ContentType = "application/octet-stream";
Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(dt.Rows[]["name"].ToString()) + ".tiff");
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
} //下一页
protected void LinkButtonNextPage_Click(object sender, EventArgs e)
{
int page = Convert.ToInt32(this.LabelCurrentPage.Text);
this.LabelCurrentPage.Text = Convert.ToString(page + );
fenyeshow(page);
} //上一页
protected void LinkButtonPreviousPage_Click(object sender, EventArgs e)
{
int page = Convert.ToInt32(this.LabelCurrentPage.Text) - ;
this.LabelCurrentPage.Text = Convert.ToString(page + );
fenyeshow(page);
}
//首页
protected void LinkButtonFirstPage_Click(object sender, EventArgs e)
{
int page = ;
this.LabelCurrentPage.Text = "";
fenyeshow(page);
}
//尾页
protected void LinkButtonLastPage_Click(object sender, EventArgs e)
{
int page = Convert.ToInt32(this.LabelPageCount.Text) - ;
this.LabelCurrentPage.Text = this.LabelPageCount.Text;
fenyeshow(page);
}
//Go
protected void btnGo_Click(object sender, EventArgs e)
{
int page = ;
if (this.txtNewPageIndex.Text != "")
{
int pagecount = Convert.ToInt32(this.LabelPageCount.Text);
int txt = Convert.ToInt32(this.txtNewPageIndex.Text);
if (txt <= pagecount && txt > )
{
page = Convert.ToInt32(this.txtNewPageIndex.Text) - ;
this.LabelCurrentPage.Text = this.txtNewPageIndex.Text;
}
}
if (page == )
{
this.LabelCurrentPage.Text = "";
}
fenyeshow(page);
}
//显示页面
public void fenyeshow(int pagecount)
{
string username = Request.QueryString["username"];
Image1.ImageUrl = "ShowImage.aspx?username=" + username + "&pagecount=" + pagecount.ToString();
if (this.LabelCurrentPage.Text == "")
{
this.LinkButtonPreviousPage.Enabled = false;//上一页只读
this.LinkButtonFirstPage.Enabled = false;//首页只读
this.LinkButtonNextPage.Enabled = true;
this.LinkButtonLastPage.Enabled = true;
}
if (this.LabelCurrentPage.Text == this.LabelPageCount.Text)
{
this.LinkButtonNextPage.Enabled = false;//下一页只读
this.LinkButtonLastPage.Enabled = false;//尾页只读
this.LinkButtonPreviousPage.Enabled = true;
this.LinkButtonFirstPage.Enabled = true;
}
}

Default.aspx

2.输出界面

 public static MemoryStream stream;
protected void Page_Load(object sender, EventArgs e)
{
string username = Request.QueryString["username"];
int pagecount =int.Parse(Request.QueryString["pagecount"]); string sql = string.Format("select top(1) image from Image_Table where image_code=( select new_sjbh from new_ksy_dzpz where new_ksy_dzpzid='{0}' ) ", username);
DataTable dt = SqlHelper.GetTable(sql);
if (dt.Rows.Count>)
{
stream = new MemoryStream((byte[])dt.Rows[]["image"]);
}
if (pagecount >= )
{
getImage(pagecount.ToString());
} } void getImage(string pp)//根据路径输出Jpeg格式图片流
{
Bitmap bt = new Bitmap(stream);
Guid gud = (Guid)bt.FrameDimensionsList.GetValue();
FrameDimension fds = new FrameDimension(gud); if (pp != "")
{ int qq = Convert.ToInt16(pp);
bt.SelectActiveFrame(fds, qq);
} MemoryStream ss = new MemoryStream();
bt.Save(Server.MapPath("1.jpg"));
bt.Save(ss, ImageFormat.Jpeg);
byte[] bb = ss.GetBuffer();
ss.Read(bb, , (int)ss.Length);
//this.ID_img.ImageUrl =Convert.ToString(bb);
Response.BinaryWrite(bb);
ss.Close();
bt.Dispose();
Response.End();
}

ShowImage.aspx

Tips:会在根目录下生成1.jpg文件,若迁移代码 需删掉1.jpg文件!