http://dotnet.aspx.cc/ShowDetail.aspx?id=ECD9AE16-8FF0-4A1C-9B9F-5E8B641CB1B1这篇文章的代码我已经用了,通过传值来显示一副副图片。我想做的改进是,直接在一个页面里显示出所有的图片,就是把ReadImage.aspx这个页面里的代码融合到图片显示一个页面里面。
关键就是如何读出所有的图片,而不是一个一个的通过传值。请大家指点。第二点就是,如果分页显示,我是把图片直接存入数据库,而不是存入的链接地址。就是像搜狐的校友录一样,缩小显示图片,通过图片一个超链接来响应大图。谢谢,谢谢大家。我需要一个思路。
关键就是如何读出所有的图片,而不是一个一个的通过传值。请大家指点。第二点就是,如果分页显示,我是把图片直接存入数据库,而不是存入的链接地址。就是像搜狐的校友录一样,缩小显示图片,通过图片一个超链接来响应大图。谢谢,谢谢大家。我需要一个思路。
调用Graphics对象来创建Image,并保存到硬盘上,这样你可以生成微缩图和原图,
图形控件就采用这种方式。
例子在我的blog中有关于图形控件的介绍,并有相关代码
<img src="showimg.aspx?id=1">
<img src="showimg.aspx?id=1">
<img src="showimg.aspx?id=1">
<img src="showimg.aspx?id=1">
<img src="showimg.aspx?id=1">
如此放上多个,再用表格排列起来,它自然就在一个页面中显示多图了.
即使你自行在硬盘上生成缩略图,想要在一个页面中显示,那还是必须如下:
<img src="xxx.gif">如此多个.第二个问题,下面给你一个显示的例子
下面是显示图片的页面showimg.aspx后台代码,该页面不需要放任何东西.
--------------------------------------------------------------------
//创建数据库连接
OracleConnection myConnection = new OracleConnection(ConfigurationSettings.AppSettings["sysDSN"]);
myConnection.Open();//打开数据库
OracleCommand myCommand = myConnection.CreateCommand();
string sql = "select tmp_blob from tmp where tmp_id = 103";
myCommand.CommandText = sql;
OracleDataReader myRead = myCommand.ExecuteReader();//开始读取
myRead.Read();
//这个方法更直接
Byte[] Buffer = (Byte[])myRead[0];
//OracleLob myLob = myRead.GetOracleLob(0);
//长度是long,转为int32
//int myLength = Convert.ToInt32(myLob.Length);
//Byte[] Buffer = new byte[myLength];
//myLob.Read(Buffer,0,myLength);//输出
this.Response.Clear();
//输出mime类型,根据上传的文件取到的mimetype,是什么我忘记了,自己写上,不过不写也没有关系.
this.Response.ContentType = "";
this.Response.BinaryWrite(Buffer);
this.Response.End();
<asp:Image Runat=server ID="Image1" Width="150" Height="125"ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "PersonID")) %>' />还有如果按照你的那个思路,我觉得要做到分页恐怕比想象的要难,
<img src="showimg.aspx?id=1">
<img src="showimg.aspx?id=1">
<img src="showimg.aspx?id=1">
<img src="showimg.aspx?id=1">
<img src="showimg.aspx?id=1">
这样来排列,其实已经是限定了在一页中现实图片的数目。那么在分页的时候又如何做呢。谢谢两位。