Image控件显示以byte[]字节数组形式存在的图片
工作中遇到了这样的一个问题。起初觉得很简单,获得了图片的byte[]后,可以将其转换成内存中的图片对象(如System.Drawing.Image),而后赋给页面的Image控件。尝试后才发现这样根本做不到。搜索网络,整理出两种实现的方法。
一、引入一新页面.aspx,Image控件URL指向该页面
该页面ImageSource.aspx只完成一件事:将代表图片的byte[]写入http输出流。
Response.BinaryWrite(imgBytes);
该页面的执行效果即只显示图片本身。
使Image控件的ImageUrl属性指向该页面。
imgPicture.ImageUrl = string.Concat("ImageSource.aspx?name=", "Lighthouse");
功能实现。该种方式比较简单,但是弊端就是引入了一个貌似多余的页面ImageSource.aspx。为避免这一点,便有了第二种方法。
二、引入HttpHandler,专门处理图片加载的请求
Image控件依然通过ImageUrl属性指向一页面url,但该页面并不真实存在。该请求交由Handler处理。
<httpHandlers>
<add verb="*" path="ImageVirtualSource.aspx" type="ImageBytesShowSample.ImageVirtualSourceHandler"/>
</httpHandlers>
ImageVirtualSourceHandler中完成的工作基本与先前ImageSource.aspx中无异,主要就是将图片byte[]输出到http流。
public void ProcessRequest(HttpContext context)
{
var imgName = context.Request.QueryString["name"];
var lightImg = Image.FromFile(string.Concat("E:\\CSPro\\ImageBytesShowSample\\ImageBytesShowSample\\", imgName, ".jpg")); Byte[] imgBytes = ImageToBytes(lightImg); context.Response.BinaryWrite(imgBytes);
}
特别注意:
若使用集成环境运行(VS调试运行),<system.web>下<httpHandlers>配置不被识别。请改为在IIS经典模式下运行或者将configuration移到<system.webServer>下。
<system.webServer>
<handlers>
<add name ="virtualImageHandler" verb="*" path="ImageVirtualSource.aspx" type="ImageBytesShowSample.ImageVirtualSourceHandler"/>
</handlers>
</system.webServer>
Image控件显示以byte[]字节数组形式存在的图片的更多相关文章
- GridView控件显示图片
与图片的二进制数据库存储和显示 1.将图片以二进制存入数据库 2.读取二进制图片在页面显示 3.设置Image控件显示从数据库中读出的二进制图片 4.GridView中ImageField以URL方式 ...
- ADO.NET之使用DataGridView控件显示从服务器上获取的数据
今天回顾下ADO.NET中关于使用DataGridiew控件显示数据的相关知识 理论整理: 使用 DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据. SqlDataAd ...
- JGUI源码:实现日期控件显示(17)
本文实现一个日期控件显示,日期控件看起来很复杂,其实原理很简单,大部分情况下我们直接使用别人做得好的日期控件就行,但有时候特殊需求,比如显示提醒之类的,恐怕第三方控件就不好实现了, 为了使程序逻辑看起 ...
- xcode8 storyboard 控件显示错位
升级xcode8 后选择device 为6s 出现上面的情况,控件显示异常.使用Update Frame 显示正常.不能选择Update Constraints 如果误选 commend + Z ...
- HighChats图表控件显示精度小数点的方法
相信大家对highchats这个图表控件并不陌生,最近在项目中用到它,但是某些字段需要显示为小数点,顾查找资料文档发现下面两个方式可以实现: 初始化时候添加如下两个参数 tooltip:{ fo ...
- C# 如何定义让PropertyGrid控件显示[...]按钮,并且点击后以下拉框形式显示自定义控件编辑属性值
关于PropertyGrid控件的详细用法请参考文献: 1.C# PropertyGrid控件应用心得 2.C#自定义PropertyGrid属性 首先定义一个要在下拉框显示的控件: using Sy ...
- 033. asp.netWeb用户控件之二将页面转换成web控件和使用Web控件显示热点新闻
访问Web用户控件的属性 ASP.NET提供的各种服务器控件都有其自身的属性和方法,程序开发人员可以灵活地使用服务器控件中的属性和方法开发程序.在用户控件中,程序开发人员也可以自行定义各种属性和方法, ...
- Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php
Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php 1. Keyword/subtitle 1 2. 使用dwr3的异常convert处 ...
- 部门树形结构,使用Treeview控件显示部门
部门树形结构.设计张部门表用于存储部门编码.名称.上级部门id,使用Treeview控件显示部门树,并实现部门增删改.移动.折叠等功能.特别提示,部门有层级关系,可用donetbar的adtree控件 ...
随机推荐
- Element表单验证规则
一.简单的逻辑验证使用方法: 方法步骤: 1.在html中给el-form增加 :rules="rules" 2.html中在el-form-item 中增加属性 prop=&qu ...
- 『ACM C++』HDU杭电OJ | 1416 - Gizilch (DFS - 深度优先搜索入门)
从周三课开始总算轻松了点,下午能在宿舍研究点题目啥的打一打,还好,刚开学的课程还算跟得上,刚开学的这些课程也是复习以前学过的知识,下半学期也不敢太划水了,被各种人寄予厚望之后瑟瑟发抖,只能努力前行了~ ...
- 使用JDK开发WebServrice案例
使用JDK开发WebServrice案例: 一.开发WebService服务器端 第一步:创建Java工程 ,创建相应的包(服务端)使用JDK开发(1.6以上版本) 第二步:建一个接口WebServi ...
- 第一次使用mpvue的小记
昨晚睡前打开了半个月没打开的知乎, 看到了一个专栏文章再见jquery,我的老朋友,突然想到之前github传出,github已经彻底删除jquery,这似乎标志着前端已经完全进入了一个新的时代, ...
- Struts2+EasyUI+Hibernate小实例
概述 这个实例主要是前台数据到后台数据的传递和后台数据到前台数据的传递,完成数据的新增,以及对新增数据的展示.下面是详细的过程: Hibernate(数据库部分) 这里只是数据库的连接和数据库实体与物 ...
- Gitlab 自动构建心得
上面是简单接受一下gitlab ci的工作原理 GitLab-CI 这个是一套配合GitLab使用的持续集成系统,是GitLab自带的,也就是你装GitLab的那台服务器上就带有的.无需多考虑..gi ...
- Divisibility题解
From lyh 学长 2018.5.3 信(liang)心(liang)杯T3 一道略弱的数论题. 题目描述 给定 n个数,问是否能从中选出恰好 k个数,使得这些数两两之差可以被 m 整除. 输入输 ...
- 15-oauth2+oidc实现Server部分
1-我们使用之前项目的mvcCookieAuthSampe2进行改造 1.1 增加IdentityServer4 2-增加Config.cs文件,对IdentityServer提供相关的配置数据 u ...
- mac, start sublime from terminal
1.where is sublime CLI /Applications/Sublime Text.app/Contents/SharedSupport/bin/subl 2. run sublime ...
- uCOS-II中的任务切换-图解多种任务调度时机与问题
[@.1 任务调度时机] 之前的一篇文章分析了具体的uCOS-II中的任务切换机制,是从函数调用的角度上分析的.这次我具体从整个程序运行的时间上来看,分析多种任务调度发生的时机.以下所有图片均可点击放 ...