日期:2014-05-18  浏览次数:20783 次

小弟初学C#遇到一个读写数据库的小问题,想请教各们大大
我的数据库里以前存了很多的图片 每张图片都非常大,现在想把图片进行压缩成800*600的大小再重新存入数据库内
SqlCommand _sql_pro = new SqlCommand("Select * From Product order by id desc", _SqlConnection);
  _SqlConnection.Open();
  SqlDataReader sqlDateReader_pro = _sql_pro.ExecuteReader();
  Image image = null;
  Image newImage = null;

  while (sqlDateReader_pro.Read())
  {
  if (sqlDateReader_pro["Photo"].ToString() == null || sqlDateReader_pro["Photo"].ToString() == "")
  {
  image = null;
  }
  else
  {
  MemoryStream ms = new MemoryStream((byte[])sqlDateReader_pro["Photo"]);
  image = Image.FromStream(ms, true);
  }
  if (image != null)
  {
  int intWidth = 800;
  int intHeight = (intWidth * image.Height) / image.Width;
  //int intHeight = 70;
  newImage = image.GetThumbnailImage(intWidth, intHeight, null, new IntPtr());
  }
  else
  {
  newImage = null;
  }
  }
上面一段是我读取出来了 已经转成800宽的了 但接下来写入到数据库里就不会了,也就是读一条写一条 写到原来图片对应的地方
紧急求助了 希望大哥们帮忙了

------解决方案--------------------
我个人认为可以,先把修改好的图片放到Dictionary<id,image>()里面。
等全部修改好了。再从dictionary里拿出iamge根据id
从新update一遍。

不知道有没有更好的方法 仅供参考
------解决方案--------------------
你就多等一会咯。又不是每次都要这样等。你不会是整天都去修改的吧。
 如果读一条改一条。恐怕是没有一起读好,然后一起update吧。
你看看等下有没有更好的方法。
------解决方案--------------------
缩略图保存到文件夹,再保持路径到数据库
或显示时等比例缩放
------解决方案--------------------
探讨
引用:
我个人认为可以,先把修改好的图片放到Dictionary<id,image>()里面。
等全部修改好了。再从dictionary里拿出iamge根据id
从新update一遍。

不知道有没有更好的方法 仅供参考

我也想过先全部读出来 但是会好多的 有差不多上万条记录