Image显示任意绝对路径下的图片(二进制流方式)方法详解

发布时间:2020-03-06编辑:脚本学堂
本文介绍下,在image中显示任意绝对路径下图片的方法,通过二进制流的方式。有需要的朋友,不妨参考下。

需求:数据库中存储的是照片所在的绝对路径(可以不在系统所在路径下),Image控件动态加载路径下的图片。

说明:
Image控件是在System.Web.UI.WebControls命名控件中,不能像在winform中那样通过byte[]直接显示图片。

本文介绍一种可行的方法:
采取将图片读取,然后将读进来的二进制流写到一个页面上,然后将Image的URL设置为此页面。

来看具体的实现代码,希望可以帮助到大家。

1,前台代码:
 

复制代码 代码示例:
<head runat="server">
<title>Image显示任意绝对路径下的图片_www.jb200.com</title>
<script src="/js/jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
function ShowP(obj) {
$("#Image1")[0].src = "ShowPic.aspx?URL=" + obj.id;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="E:1.jpg" type="button" value="button" onclick="ShowP(this);" />
<asp:Image ID="Image1" runat="server" />
</div>
</form>
</body>
</html>

2,ShowPic.aspx的前台代码为空,下面是ShowPic.aspx的后台代码:
 

复制代码 代码示例:
public partial class ShowPic : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
#region "根据照片路径,将照片转为二进制数组"
string strUrl = Request.QueryString["URL"];
// 以二进制方式读文件
FileStream aFile = new FileStream(strUrl, FileMode.OpenOrCreate, FileAccess.ReadWrite);
// 创建一个二进制数据流读入器,和打开的文件关联
BinaryReader brMyfile = new BinaryReader(aFile);
// 把文件指针重新定位到文件的开始
brMyfile.BaseStream.Seek(0, SeekOrigin.Begin);
//获取照片的字节数组
byte[] photo = brMyfile.ReadBytes(Convert.ToInt32(aFile.Length.ToString()));
// 关闭以上new的各个对象
brMyfile.Close();
#endregion
Response.BinaryWrite(photo);
}
}
 

以上把照片的路径赋给了按钮ID,然后将路径作为参数来调用ShowPic.aspx,在ShowPic的后台代码中,将照片以二维数组的形式写到页面上,如果直接打开这个页面,会显示乱码
然后将Image的Url设置为这个页面,此时会显示图片。

通过按钮ID实现了一下动态加载图片,到具体应用,传参上有些小问题,这个大家自行研究下。