多页的TIFF图片在aspx页面分页显示
一、逻辑实现:将数据库中的二进制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文件!
多页的TIFF图片在aspx页面分页显示的更多相关文章
- js 将很长的内容进行页面分页显示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Winform 图片预览列表+分页显示
针对图片列表展示信息,一开始没有做过相关类似的功能,大多都是以表格行显示为主,所以刚开始实现这个功能的时候是懵逼的.无从下口.在网上搜索一时半会也没找到合适的解决方案.大致就是类似于下图这样,每条数据 ...
- JSP页面分页显示数据
效果如上图所示!最多显示10条:完整jsp和后台代码如下: <%@ page contentType="text/html;charset=UTF-8" %> < ...
- aspx页面图片用作html中img的url
背景:如果无法直接访问保存图片的服务器,我们可以先制作一个aspx页面用来接受服务器发送过来的图片,然后html页面请求aspx页面.对图片服务器起一定的缓冲保护作用,预防对黑客攻击造成危害. 注意: ...
- HTML控件ID和NAME属性的区别,以及如何在asp.net页面的.CS文件中获得.ASPX页面中HTML控件的值
在html中:name指的是用户名称,ID指的是用户注册是系统自动分配给用户的一个序列号. name是用来提交数据的,提供给表单用,可以重复: id则针对文档操作时候用,不能重复.如:document ...
- Aspx页面模拟WebService功能
在后台引入 using System.Web.Services 命名空间 然后在编写web服务方法: [WebMethod] public static string GetData(string t ...
- WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据
WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据 WebForm1.aspx 页面 (原生AJAX请求,写法一) <%@ Page Langu ...
- Jquery Ajax调用aspx页面方法
Jquery Ajax调用aspx页面方法 在asp.net webform开发中,用jQuery ajax传值一般有几种玩法 1)普通玩法:通过一般处理程序ashx进行处理: 2)高级玩法:通过as ...
- aspx页面中用Input 标签实现上传图片功能
实现上传图片功能需单独的建立一个aspx页面, 其中前台页面需要注意两点: a)实现上传功能的input的type="file" b)设置请求报文头为 enctype=" ...
随机推荐
- firebug不能加载JS文件 ,无法进行JS脚本调试
提示: 本页面不包含 Javascript 如果 <script> 标签有 "type" 属性,其值应为 "text/javascript" 或者& ...
- linux常用命令(1)cd命令
1 命令格式:cd [目录名]2 命令功能切换当前目录至dirName3 常用范例3.1 进入系统根目录cd /3.2 进入上级目录cd .. 或者 cd ..//3.3 进入当前用户主目录当前用 ...
- requests源码阅读学习笔记
0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...
- 使用Metrics.NET 构建 ASP.NET MVC 应用程序的性能指标
通常我们需要监测ASP.NET MVC 或 Web API 的应用程序的性能时,通常采用的是自定义性能计数器,性能计数器会引发无休止的运维问题(损坏的计数器.权限问题等).这篇文章向你介绍一个新的替代 ...
- 入园记------我的DBA之路
今天周一拖着疲惫的身躯 11点才离开公司,回到家估计写完这篇博客就要17号了. 一个人走在回家的路上,很黑,突然很多感触,一个人在北京拼搏,不敢停止学习的脚步,因为只要停下来就会感觉到孤独. 回顾一下 ...
- JDK 中的证书生成和管理工具 keytool
参考资料 该文中的内容来源于 Oracle 的官方文档 Java SE Tools Reference .Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以直接找 ...
- Entity Framework 6 Recipes 2nd Edition(11-9)译 -> 在LINQ中使用规范函数
11-9. 在LINQ中使用规范函数 问题 想在一个LINQ查询中使用规范函数 解决方案 假设我们已经有一个影片租赁(MovieRental )实体,它保存某个影片什么时候租出及还回来,以及滞纳金等, ...
- js自动提示查询添加功能(不是自动补全)
在工作中遇到查询某些数据,并添加到一个列表里的时候,写了一个小功能. 优点: 1.纯手工JS代码,不需要任何js框架,复制下来就能测试,无毒副作用. 2.通过模糊查询快速定位数据,并添加到列表里. 缺 ...
- ActiveMQ5.14.1+Zookeeper3.4.9高可用伪分布式部署
本文借鉴http://www.cnblogs.com/gossip/p/5977489.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 ...
- 使用SuperSlide 实现标签切换
小颖之前还写过一篇jquery实现标签切换的文章 jquery实现Tab选项卡菜单 今天小颖逛博客园时看到了用SuperSlide 实现标签切换的文章,所以小颖就自己试了下,试了后发现SuperSl ...