在sql数据库中,以缩略图的方式将多张图片显示在一个容器中(winform)

zk911 2009-10-12 04:10:57
例如我的数据库记录如下
id pic1 pic2 pic3 pic4

001 <Binary> <Binary> <Binary> <Binary>
002 <Binary> <Binary> <Binary> <Binary>
003 <Binary> <Binary> <Binary> <Binary>

id为int类型 pic为image类型


请问如何以缩略图的方式将多张图片显示在一个容器中,单击其中一个图片后则自动放大!!!
...全文
265 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zk911 2009-11-09
  • 打赏
  • 举报
回复
能给粘贴一下代码吗?这样会好理解一些!!!
litepos 2009-11-05
  • 打赏
  • 举报
回复
我也来 UP一下,也为这个事着急呢
yhs2003 2009-11-05
  • 打赏
  • 举报
回复
我原来在Delphi做过类似的程序。经验如下:
1、图片存入数据库时,同时生成缩略图,一并存入。否则,大图片读取和显示速度过慢。
2、显示图片时,一次固定显示几张(6×3),显示缩略图(可以,将此几张写入固定文件名称的临时文件并显示)。
3、点击放大时,读取并显示原始图。
收工!给分!!
zk911 2009-10-14
  • 打赏
  • 举报
回复
没有人做过这方面的项目吗?

继续等待!!!
zk911 2009-10-14
  • 打赏
  • 举报
回复
up
zk911 2009-10-13
  • 打赏
  • 举报
回复
是WINFORM程序!!!
dylike 2009-10-13
  • 打赏
  • 举报
回复
WEB还是WINFORM?
zk911 2009-10-13
  • 打赏
  • 举报
回复
wuyq11的方法是把数据库的图片都下载到磁盘吧?
那每次如何通过查询选择不同的编号而关联相应的图片字段呢?
zk911 2009-10-13
  • 打赏
  • 举报
回复
如果每次都循环读取图片保存到磁盘,时间长了磁盘上的文件会很多吧,还有没有更好的办法呢!!!
wuyq11 2009-10-12
  • 打赏
  • 举报
回复
循环读取图片保存到磁盘,再关联imagelist
byte[] MyData = new byte[0];
using (SqlConnection conn = new SqlConnection(sqlconnstr))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from Tb";
SqlDataReader sdr = cmd.ExecuteReader();
if(sdr.Read())
{
MyData = (byte[])sdr["Pic1"];
int ArraySize= MyData.GetUpperBound(0);
FileStream fs = new FileStream(@"c:\01.jpg", FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(MyData, 0, ArraySize);
fs.Close();
}
conn.Close();
}

鸭梨山大帝 2009-10-12
  • 打赏
  • 举报
回复
没啥缩略图的说法,往每个CELL中填充一个BITMAP,填充的时候控制大小为 小(你想要的尺寸),在点击的时候,把选择到的图片放大即可
gisyellow 2009-10-12
  • 打赏
  • 举报
回复
用一个Panel,里面放多个PictureBox,每个PictureBox对应一个缩略图。。
zk911 2009-10-12
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, System.EventArgs e)
{

string[] files=System.IO.Directory .GetFiles (Application.StartupPath +"\\pic\\");
if(files.Length <1)return;
for(int i=0;i<files.Length ;i++)
{
if(files[i].Substring (files[i].Length -3,3)==".db")continue;
iw.Item item=new iw.Item ();
item.Pic =new Bitmap (files[i]);
item.Text=i.ToString ()+".bmp";
item.Path =files[i];
iv1.AddItem (item);
}
iv1.Draw();
}

在网上找到一段以上代码,但不是针对数据库操作的,他是针对某一特定目录读取图片的,如果能将上述代码改成从数据库中读取显示图片就基本实现我的问题了!

iv1是一个容器控件!!!

请路过的朋友指点一下,谢谢!!!

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧