如何从ACCESS数据库中读取图形(续)

嘉庆day

嘉庆day

2016-01-29 18:27

如何从ACCESS数据库中读取图形(续),如何从ACCESS数据库中读取图形(续)
  注意的是你也可以从一个文件中新建一个位图对象,但使用这样
的方式保存在数据库中的图形格式是浏览器不能够识别的。
当你往数据库中保存图象时,你应该知道你需要使用什么格式来保存
你可以把文件中的每一个字节保存下来,或则通过ACCESS/Foxpro的把图形保存
为一个OLE格式。
你使用什么格式保存图象决定了你在ASP中用什么格式来读出图形来。
具体来说,如果你在ACCESS/FoxPro中将图形保存为bmp,gif,jpeg(
这个必须要使用到ACCESS/FoxPro的OLE对象,即使用ACCESS的插入对象
对话框来完成),这是当你使用
image/bmp时浏览器是不能够解释的。

现在假设在数据库中保存的是你所想要的图形格式
(GIF, JPEG, BMP, TIFF, 等等等等)现在来看看要怎么把它们从
数据库中读出来。

在ACCESS中使用了两个关键的技术来保存图形
1。使用了bmp格式
2。78个字节的文件头

<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = "image/bmp"
%
接着你要干的就是去掉那78个字节的OLE对象的文件头。
<%
Const OLEHEADERSIZE = 78
nFieldSize = rs("photo").ActualSize
oleHeader = rs("photo").GetChunk(OLEHEADERSIZE)
imageBytes = rs("photo").GetChunk(nFieldSize - OLEHEADERSIZE)
Response.BinaryWrite imageBytes
%

现在举一个例子:
如果你要得到一个职工的信息,这段信息包括一个介绍和他的图象。
并且要同时显示文字和图形。
代码如下:(其中的theImg是一个代理页面)
theImg.asp
<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = Session("ImageType")
response.BinaryWrite Session("ImageBytes")
Session("ImageType") = ""
Session("ImageBytes") = ""
response.End
%


Function SetImageForDisplay(field, contentType)
OLEHEADERSIZE = 78
contentType = LCase(contentType)
select case contentType
case "gif", "jpeg", "bmp"
contentType = "image/" & contentType
bytes = field.value
case "ole"
contentType = "image/bmp"
nFieldSize = field.ActualSize
oleHeader = field.GetChunk(OLEHEADERSIZE)
bytes = field.GetChunk(nFieldSize - OLEHEADERSIZE)
end select
Session("imageBytes") = bytes
Session("imageType") = contentType
End Function
'注意的是,程序中只使用了4中格式:gif, jpeg, bmp , ole .

<%
sql = "select * from Employees"
Set oRS = Server.CreateObject("ADODB.Recordset")
oRS.CursorLocation = 3
oRS.Open sql, "DSN=NW"
SetImageForDisplay oRS("photo"), "ole"
Set oRS.ActiveConnection = Nothing
%

要显示图象的话,只需要在另外一个asp中,假设为getEmpInfo.asp中
<img src="http://img.jcwcn.com/attachment/portal"
展开更多 50%)
分享

猜你喜欢

如何从ACCESS数据库中读取图形(续)

ASP
如何从ACCESS数据库中读取图形(续)

读取Access数据库表名实例

编程语言 网络编程
读取Access数据库表名实例

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

DELPHI中操作ACCESS数据库

编程语言 网络编程
DELPHI中操作ACCESS数据库

如何操作Access数据库

编程语言 网络编程
如何操作Access数据库

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何优化Access数据库

编程语言 网络编程
如何优化Access数据库

在Access数据库中如何使用SQL

编程语言 网络编程
在Access数据库中如何使用SQL

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《使命召唤11 高级战争》生存模式最后僵尸关过法

《使命召唤11 高级战争》生存模式最后僵尸关过法

原来是你在作怪轻松清除Word中的页眉横线

原来是你在作怪轻松清除Word中的页眉横线
下拉加载更多内容 ↓