点击小图片时,我试图显示大图像。我有一个SQL表,我在其中存储图像,然后我在img控件中显示此图像。现在,当用户点击它时,我希望这个图像以更大尺寸的弹出窗口打开。
我从数据库中检索图像并在img控件中显示的代码是:
<script type="text/javascript">
$('#image1Large').hide().click(function() {
$(this).hide();
});
$('#image1').click(function() {
$('#image1Large').attr('src', this.src)
.show()
.offset({ top: 0, left: 0 });
});
</script>
<img runat="server" id="image1" alt="" src="" height="100" width="100"/>
<img runat="server" id="image1Large" alt=""/>
protected void LoadImage1()
{
SqlCommand cmd = new SqlCommand("sps_getimage", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@flag", 1);
cmd.Parameters.AddWithValue("@ad_id", ad_id);
con.Open();
SqlDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess);
if (reader.HasRows)
{
reader.Read();
MemoryStream memory = new MemoryStream();
long startIndex = 0;
const int ChunkSize = 256;
while (true)
{
byte[] buffer = new byte[ChunkSize];
long retrievedBytes = reader.GetBytes(0, startIndex, buffer, 0, ChunkSize);
memory.Write(buffer, 0, (int)retrievedBytes);
startIndex += retrievedBytes;
if (retrievedBytes != ChunkSize)
break;
}
byte[] data = memory.ToArray();
img1 = data;
memory.Dispose();
image1.Src = "data:image/png;base64," + Convert.ToBase64String(data);
}
con.Close();
}
答案 0 :(得分:0)
这不是C#或SQL问题,而是客户端问题。由于您已经检索了图像并且仅通过height="100" width="100"
属性调整了大小,因此您所要做的就是以原始大小显示相同的图像。有很多方法可以做到这一点,这是一个基本的方法:
添加另一个图像元素以保存更大的图像:
<img runat="server" id="image1" alt="" src="" height="100" width="100"/>
<img runat="server" id="image1Large" />
并添加此代码以初始隐藏较大的图片并在点击时显示:
$('#image1Large').hide().click(function(){
$(this).hide();
})
$('#image1').click(function(){
$('#image1Large').attr('src', this.src)
.show()
.offset({top:0,left:0});
})
以下是演示:http://jsfiddle.net/QH5a8/
在现实生活中,你需要调整它(可能需要对更大的图像进行额外的格式化和定位,也许可以在DIV容器中显示等等),但这就是想法。