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

1.显示界面

  1. public FrameDimension MyGuid;
  2. public static int MyPos = ;
  3. public static int totalPage = ;
  4. public static MemoryStream stream;
  5. protected void Page_Load(object sender, EventArgs e)
  6. {
  7. if (!IsPostBack)
  8. {
  9. string username = Request.QueryString["username"];
  10. 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);
  11. DataTable dt = SqlHelper.GetTable(sql);
  12. if (dt.Rows.Count > )
  13. {
  14. Image1.ImageUrl = "ShowImage.aspx?username=" + username + "&pagecount=0";
  15. stream = new MemoryStream((byte[])dt.Rows[]["image"]);
  16. // Bitmap bt = new Bitmap(Server.MapPath(Image1.ImageUrl));
  17. Bitmap bt = new Bitmap(stream);
  18. Guid gud = (Guid)bt.FrameDimensionsList.GetValue();
  19. FrameDimension fds = new FrameDimension(gud);
  20. totalPage = bt.GetFrameCount(fds);//获取页数
  21. this.LabelPageCount.Text = totalPage.ToString();
  22. this.LabelCurrentPage.Text = "";
  23. if (totalPage == )
  24. {
  25. this.LinkButtonPreviousPage.Enabled = false;//上一页只读
  26. this.LinkButtonFirstPage.Enabled = false;//首页只读
  27. this.LinkButtonNextPage.Enabled = false;//下一页只读
  28. this.LinkButtonLastPage.Enabled = false;//尾页只读
  29. this.btnGo.Enabled = false;
  30.  
  31. }
  32. }
  33. this.LinkButtonPreviousPage.Enabled = false;//上一页只读
  34. this.LinkButtonFirstPage.Enabled = false;//首页只读
  35. }
  36.  
  37. }
  38. //下载
  39. protected void Button1_Click(object sender, EventArgs e)
  40. {
  41. string username = Request.QueryString["username"];
  42. 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);
  43. DataTable dt = SqlHelper.GetTable(sql);
  44. if (dt.Rows.Count > )
  45. {
  46. byte[] bytes = (byte[])dt.Rows[]["image"];
  47. //下载单个凭证
  48. Response.Buffer = true;
  49. Page.Response.Clear();//清除缓冲区所有内容
  50. Page.Response.ContentType = "application/octet-stream";
  51. Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(dt.Rows[]["name"].ToString()) + ".tiff");
  52. Response.BinaryWrite(bytes);
  53. Response.Flush();
  54. Response.End();
  55. }
  56. }
  57.  
  58. //下一页
  59. protected void LinkButtonNextPage_Click(object sender, EventArgs e)
  60. {
  61. int page = Convert.ToInt32(this.LabelCurrentPage.Text);
  62. this.LabelCurrentPage.Text = Convert.ToString(page + );
  63. fenyeshow(page);
  64. }
  65.  
  66. //上一页
  67. protected void LinkButtonPreviousPage_Click(object sender, EventArgs e)
  68. {
  69. int page = Convert.ToInt32(this.LabelCurrentPage.Text) - ;
  70. this.LabelCurrentPage.Text = Convert.ToString(page + );
  71. fenyeshow(page);
  72. }
  73. //首页
  74. protected void LinkButtonFirstPage_Click(object sender, EventArgs e)
  75. {
  76. int page = ;
  77. this.LabelCurrentPage.Text = "";
  78. fenyeshow(page);
  79. }
  80. //尾页
  81. protected void LinkButtonLastPage_Click(object sender, EventArgs e)
  82. {
  83. int page = Convert.ToInt32(this.LabelPageCount.Text) - ;
  84. this.LabelCurrentPage.Text = this.LabelPageCount.Text;
  85. fenyeshow(page);
  86. }
  87. //Go
  88. protected void btnGo_Click(object sender, EventArgs e)
  89. {
  90. int page = ;
  91. if (this.txtNewPageIndex.Text != "")
  92. {
  93. int pagecount = Convert.ToInt32(this.LabelPageCount.Text);
  94. int txt = Convert.ToInt32(this.txtNewPageIndex.Text);
  95. if (txt <= pagecount && txt > )
  96. {
  97. page = Convert.ToInt32(this.txtNewPageIndex.Text) - ;
  98. this.LabelCurrentPage.Text = this.txtNewPageIndex.Text;
  99. }
  100. }
  101. if (page == )
  102. {
  103. this.LabelCurrentPage.Text = "";
  104. }
  105. fenyeshow(page);
  106. }
  107. //显示页面
  108. public void fenyeshow(int pagecount)
  109. {
  110. string username = Request.QueryString["username"];
  111. Image1.ImageUrl = "ShowImage.aspx?username=" + username + "&pagecount=" + pagecount.ToString();
  112. if (this.LabelCurrentPage.Text == "")
  113. {
  114. this.LinkButtonPreviousPage.Enabled = false;//上一页只读
  115. this.LinkButtonFirstPage.Enabled = false;//首页只读
  116. this.LinkButtonNextPage.Enabled = true;
  117. this.LinkButtonLastPage.Enabled = true;
  118. }
  119. if (this.LabelCurrentPage.Text == this.LabelPageCount.Text)
  120. {
  121. this.LinkButtonNextPage.Enabled = false;//下一页只读
  122. this.LinkButtonLastPage.Enabled = false;//尾页只读
  123. this.LinkButtonPreviousPage.Enabled = true;
  124. this.LinkButtonFirstPage.Enabled = true;
  125. }
  126. }

Default.aspx

2.输出界面

  1. public static MemoryStream stream;
  2. protected void Page_Load(object sender, EventArgs e)
  3. {
  4. string username = Request.QueryString["username"];
  5. int pagecount =int.Parse(Request.QueryString["pagecount"]);
  6.  
  7. 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);
  8. DataTable dt = SqlHelper.GetTable(sql);
  9. if (dt.Rows.Count>)
  10. {
  11. stream = new MemoryStream((byte[])dt.Rows[]["image"]);
  12. }
  13. if (pagecount >= )
  14. {
  15. getImage(pagecount.ToString());
  16. }
  17.  
  18. }
  19.  
  20. void getImage(string pp)//根据路径输出Jpeg格式图片流
  21. {
  22. Bitmap bt = new Bitmap(stream);
  23. Guid gud = (Guid)bt.FrameDimensionsList.GetValue();
  24. FrameDimension fds = new FrameDimension(gud);
  25.  
  26. if (pp != "")
  27. {
  28.  
  29. int qq = Convert.ToInt16(pp);
  30. bt.SelectActiveFrame(fds, qq);
  31. }
  32.  
  33. MemoryStream ss = new MemoryStream();
  34. bt.Save(Server.MapPath("1.jpg"));
  35. bt.Save(ss, ImageFormat.Jpeg);
  36. byte[] bb = ss.GetBuffer();
  37. ss.Read(bb, , (int)ss.Length);
  38. //this.ID_img.ImageUrl =Convert.ToString(bb);
  39. Response.BinaryWrite(bb);
  40. ss.Close();
  41. bt.Dispose();
  42. Response.End();
  43. }

ShowImage.aspx

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

多页的TIFF图片在aspx页面分页显示的更多相关文章

  1. js 将很长的内容进行页面分页显示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Winform 图片预览列表+分页显示

    针对图片列表展示信息,一开始没有做过相关类似的功能,大多都是以表格行显示为主,所以刚开始实现这个功能的时候是懵逼的.无从下口.在网上搜索一时半会也没找到合适的解决方案.大致就是类似于下图这样,每条数据 ...

  3. JSP页面分页显示数据

    效果如上图所示!最多显示10条:完整jsp和后台代码如下: <%@ page contentType="text/html;charset=UTF-8" %> < ...

  4. aspx页面图片用作html中img的url

    背景:如果无法直接访问保存图片的服务器,我们可以先制作一个aspx页面用来接受服务器发送过来的图片,然后html页面请求aspx页面.对图片服务器起一定的缓冲保护作用,预防对黑客攻击造成危害. 注意: ...

  5. HTML控件ID和NAME属性的区别,以及如何在asp.net页面的.CS文件中获得.ASPX页面中HTML控件的值

    在html中:name指的是用户名称,ID指的是用户注册是系统自动分配给用户的一个序列号. name是用来提交数据的,提供给表单用,可以重复: id则针对文档操作时候用,不能重复.如:document ...

  6. Aspx页面模拟WebService功能

    在后台引入 using System.Web.Services 命名空间 然后在编写web服务方法: [WebMethod] public static string GetData(string t ...

  7. WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据

    WebForm.aspx 页面通过 AJAX 访问WebForm.aspx.cs类中的方法,获取数据 WebForm1.aspx 页面 (原生AJAX请求,写法一) <%@ Page Langu ...

  8. Jquery Ajax调用aspx页面方法

    Jquery Ajax调用aspx页面方法 在asp.net webform开发中,用jQuery ajax传值一般有几种玩法 1)普通玩法:通过一般处理程序ashx进行处理: 2)高级玩法:通过as ...

  9. aspx页面中用Input 标签实现上传图片功能

    实现上传图片功能需单独的建立一个aspx页面, 其中前台页面需要注意两点: a)实现上传功能的input的type="file" b)设置请求报文头为 enctype=" ...

随机推荐

  1. C++常考面试题汇总

    c++面试题 一 用简洁的语言描述 c++ 在 c 语言的基础上开发的一种面向对象编程的语言: 应用广泛: 支持多种编程范式,面向对象编程,泛型编程,和过程化编程:广泛应用于系统开发,引擎开发:支持类 ...

  2. C#编写windows服务,多服务为什么只启动一个(ServiceBase.Run)

    https://zhidao.baidu.com/question/380395667.html //多服务一个宿主程序时必须注间以下要点: Service1的ServiceName 必须 Insta ...

  3. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  4. 【完全开源】知乎日报UWP版:增加Live磁贴、Badge、以及Toast通知

    目录 说明 实现方法 APP生命期 后台任务 说明 之前网上有人建议增加磁贴(tile).徽章(badge)功能.利用周末的时间,将这两个功能添加上去了.如果将磁贴固定到开始屏幕,磁贴就会循环播放首页 ...

  5. Windows Server 2012 磁盘管理之 简单卷、跨区卷、带区卷、镜像卷和RAID-5卷

    今天给客户配置故障转移群集,在Windows Server 2012 R2的系统上,通过iSCSI连接上DELL的SAN存储后,在磁盘管理里面发现可以新建 简单卷.跨区卷.带区卷.镜像卷.RAID-5 ...

  6. Ambari服务依赖关系图生成脚本

    1. 生成服务依赖关系 #!/usr/bin/python import sys import commands import json def genDependString(ip): url=&q ...

  7. 提高代码质量系列之二:重构小技巧——if篇

    前言: if,相信是童鞋们使用的最频繁的关键字了,而且很多时候,我们使用的if都是在无意识的状态下随手而为.键入if,两下回车(我使用了resharper,可以自动编排if的格式),再信手写下我们需要 ...

  8. ASP.NET MVC Model验证(二)

    ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...

  9. 理解CSS

    写在前面的话:对于web开发,html完成网页的structure,css完成网页的presentation,js完成网页的behavior,今天就来说一说css,通过理解一些css的基础概念,能够更 ...

  10. 再次思考 classpath 环境变量 等

    f:\aspectj1.8\lib\aspectjrt.jar;.;%JAVA_HOME%\lib;C:\Temp\IBM\SQLLIB\java\db2java.zip;C:\Temp\IBM\SQ ...