webdn
 
  首页     免费截图     VIP会员区     广告Banner     技术文档     网站模板  
网站截图,网站每日新 !
网页模板

首页 >> WebDN 技术文档 >> 网络编程 >> ASP 资料大全 >> Page 27>> 学习ASP程序显示以OLE对象存储图片

 

学习ASP程序显示以OLE对象存储图片

【摘 要】本文详细介绍关于学习ASP程序显示以OLE对象存储图片的文章专题。

 在ASP中,我们经常需要在 Web 页面上显示以二进制方式保存在数据库中的图片。

一般的图片显示没有什么问题,因为这方面的文章已经很多了,我就不再阐述。但有时候数据库中的图片是通过其他办公软件输入的,或者通过其他方式,比如在 Access 中直接添加。

  这时, 图片以 OLE 对象的方式保存在数据库中, 在图片真实内容的前面, 还保存了一些其他的信息, 比如图片的路径和文件名,等等。 如果我们还用一般的输出方式的话, 就会出错, 导致图片不能显示。
  
  幸好 jpeg, bmp 等图象格式中在图片内容的开头都有一个 SOI marker,这个 marker 对于 jpeg 来说是 FFD8, 而对于 bmp 是 424D. 这样一来, 我们只要找到这个 marker 的位置, 就可以忽略前面的内容而直接从这里开始输出图片。以 SQL server 为例,代码如下:
  
  <%
  '---------------------------------
  ' 函数:function ShowJpegField(field)
  ' 功能: 取得保存 jpeg 图片的字节数组中的 SOI marker 开始位置, 并从该位置输出真正的图片信息
  '注: jpeg 格式的 SOI marker : FFD8
  ' bmp 格式:424D
  ' 参数:图片字段
  ' 返回值: 无
  ' 调用范例:ShowJpegField(rs("picture1"))
  ' 注意: 调用此函数之前, 需要先申明 response.write 的 MIME 类型为 "image/jpeg"
  '----------------------------------------
  function ShowJpegField(field)
  dim size, i, j
  '要输出字段的总字节数
  size = field.ActualSize

  '循环找到 SOI marker 的位置
  for i = 1 to size
  if AscB(MidB(field, i, 1)) = &HFF and AscB(MidB(field, i + 1, 1)) = &HD8 then
  exit for
  end if
  next
  
  '忽略前面的无用信息, 从 SOI marker 开始输出真正的图片信息
  for j = i to size
  response.BinaryWrite MidB(field, j, 1)
  next
  end function
  %>
  
  <%
  '-------- 主程序开始 -------------------
  dim conn
  set conn = Server.CreateObject("ADODB.Connection")
  conn.open("Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=123;Data Source=MARK")
  
  sql = "select * from xinxi_mishuchu"
  set rs = conn.execute(sql)
  
  '声明输出类型, 清空输出缓冲区
  response.buffer = true
  response.clear
  response.ContentType = "image/jpeg"
  
  '调用函数输出图片
  ShowJpegField(rs("picture1"))
  
  '打完收功!
  rs.close : set rs = nothing
  conn.close : set conn = nothing
  %>
  
  如果是其他格式的图片, 如 bmp, gif 等, 输出方法类似, 只不过是 SOI marker 不同而已。




电话咨询:010-60520722 QQ咨询:3792656   |   583696287   |   66733350 关于WebDN  |  站点地图  |  联系我们  |  支付方式  |  友情链接
© 2004-2008 WebDN.com 版权所有. 沪ICP备05040479号