利用VBScript及ADODB.Steam获取部分格式图象长宽

ado|vbscript

Function Bytes2bStr(vin)
if lenb(vin) =0 then
Bytes2bStr = ""
exit function
end if
''二进制转换为字符串
Dim BytesStream,StringReturn
Set BytesStream = Server.CreateObject("ADODB.Stream")
BytesStream.Type = 2
BytesStream.Open
BytesStream.WriteText vin
BytesStream.Position = 0
BytesStream.Charset = "gb2312"
BytesStream.Position = 2
StringReturn = BytesStream.ReadText
BytesStream.close
Set BytesStream = Nothing
Bytes2bStr = StringReturn
End Function

Function BinVal(bin)
Dim i
Dim ret:ret = 0
for i = lenb(bin) to 1 step -1
ret = ret *256 + ascb(midb(bin,i,1))
next
BinVal = ret
End Function

Function BinVal2(bin)
Dim i
Dim ret:ret = 0
for i = 1 to lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
next
BinVal2 = ret
End Function

Function getImageWH(fdata)
'一个实参fdata,二进制图象数据(至于怎么读取图象的二进制数据就不用说了吧-_-!)
'返回值为一个数组,3个元素,分别为图片格式.长.宽

dim ret(2),bFlag,fsize,ADOS

fsize=clng(lenb(fdata)) '取得数据尺寸

if fsize=0 then Exit Function

Set ADOS = Server.CreateObject("ADODB.Stream")
ADOS.Type = 1
ADOS.Mode = 3
ADOS.Open

ADOS.Write fdata
ADOS.Position = 0

'写文本对象读取图像长宽和类型

ADOS.Position = 0 '重置数据开始位置
bFlag = ADOS.read(3)

if isNull(bFlag) then
ret(0) = "unknow"
ret(1) = 0
ret(2) = 0
getimagewh = ret
Exit Function
end if

'取文件类型和长宽
select case hex(binVal(bFlag))
case "4E5089":
ADOS.read(15)
ret(0) = "png"
ret(1) = BinVal2(ADOS.read(2))
ADOS.read(2)
ret(2) = BinVal2(ADOS.read(2))
case "464947":
ADOS.read(3)
ret(0) = "gif"
ret(1) = BinVal(ADOS.read(2))
ret(2) = BinVal(ADOS.read(2))
case "FFD8FF":
dim p1
do
do: p1 = binVal(ADOS.Read(1)): loop while p1 = 255 and not ADOS.EOS
if p1 > 191 and p1 < 196 then exit do else ADOS.read(binval2(ADOS.Read(2))-2)
do:p1 = binVal(ADOS.Read(1)):loop while p1 < 255 and not ADOS.EOS
loop while true
ADOS.Read(3)
ret(0) = "jpg"
ret(2) = binval2(ADOS.Read(2))
ret(1) = binval2(ADOS.Read(2))
case else:
if left(Bytes2bStr(bFlag),2) = "BM" then
ADOS.Read(15)
ret(0) = "bmp"
ret(1) = binval(ADOS.Read(4))
ret(2) = binval(ADOS.Read(4))
else
ret(0) = ""
end if
ADOS.Close
Set ADOS = Nothing
end select

Select case ret(0)
case "png","jpg","bmp","gif"
ret(1) = ret(1)
ret(2) = ret(2)
ret(0) = ret(0)
case else
ret(1) = 0
ret(2) = 0
ret(0) = "unknow"
end select

getimageWH = ret
End Function

Function GetWebData(StrUrl)
'获取INTERNET上的图片二进制数据
On Error Resume Next
if StrUrl="" then
GetWebData = ""
exit function
end if
dim tempStr
tempStr=split(StrUrl,"/")
if tempStr(ubound(tempStr))="" or inStr(StrUrl,"/")=0 then
GetWebData = ""
exit function
end if

dim Retrieval
Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "Get", StrUrl, False, "", ""
.Send
GetWebData =.ResponseBody
End With
Set Retrieval = Nothing
If Err.Number <> 0 Then Err.Clear

End Function

时间: 2024-08-01 13:43:19

利用VBScript及ADODB.Steam获取部分格式图象长宽的相关文章

利用xmlhttp和adodb.stream加缓存技术下载远程Web文件

ado|stream|web|xml|缓存|下载 研究了几天Adodb.stream和XMLHTTP的应用,找了不少很有趣的教程,下面的代码是将一个远程的页面,图片地址保存到本地的实例.将代码保存为一个.ASP的文件,将它放到IIS的一个目录下,在它的上级见一个cache目录,下载后的文件将保存到cache目录下 fso.Asp?path=logo.gif你就可以将logo.gif文件保存下来.学小偷的朋友也可以看看.. <%'----------远程获取内容,并将内容存在本地电脑上,包括任何文

excel-C# 利用com组件 读取Excel获取 该单元格的内容,背景,是否有删除线等属性

问题描述 C# 利用com组件 读取Excel获取 该单元格的内容,背景,是否有删除线等属性 最近利用C# 读取Excel,但是部分单元格中是有删除线的,部分有背景的,目前我只能读取该单元格的内容,不能读取该单元格的 背景,是否有删除线 这些属性信息 解决方案 如果你的excel格式是open XML格式的(xlsx),则可以用DocumentFormat.OpenXml.dll里面的API获取

利用xmlhttp和adodb.stream加缓存技术下载远程Web文件_小偷/采集

<%'----------远程获取内容,并将内容存在本地电脑上,包括任何文件!----------'---------------利用xmlhttp和adodb.stream-----------------'On Error Resume Next'-------------------------------定义输出格式-----------------------------path=request("path")if path ="" thenpath

利用百度空间每天轻松获取100IP

百度  一打开百度首页,百度空间的链接迎面而见,可见百度对空间的重视程度.既然百度空间这么牛,我们完全可以利用百度空间来提高自己网站的IP的.         我把标题写成<利用百度空间每天轻松获取100IP>是只我目前的流量,也主要是因为我目前也在探测阶段中,如果你是个seo关键字高手,那么你利用百度空间每天获取上万IP也不是不可能的,这并不是天方夜谭.        下面我就自己的经验总结几点不成熟的建议,如果觉得不好也不要给我丢鸡蛋啊: (1)空间名字介绍的利用: 空间的名字我们可以用一

使用PHP生成和获取XML格式数据

在做数据接口时,我们通常要获取第三方数据接口或者给第三方提供数据接口,而这些数据格式通常是以XML或者JSON格式传输,本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的XML数据. 生成XML格式数据 我们假设系统中有一张学生信息表student,需要提供给第三方调用,并有id,name,sex,age分别记录学生的姓名.性别.年龄等信息.   CREATE TABLE `student` (    `id` int(11) NOT NULL auto_increm

实战:利用热门新闻图片从百度获取流量

曾几何时,百度图片已经效仿谷歌图片,两大搜索引擎图片功能都呈瀑布流样式.先不说这样的样式对用户体验度如何,但至少,我们可以在百度效仿谷歌这种样式后通过热门新闻图片获取一定的流量. 在进行实战之前,笔者还是说点题外话.笔者有一个被强权的站点,百度只收录内页,而不收录首页.先前笔者曾在中秋国庆节第一天发表了一篇文章<中秋国庆自驾游烦心事-高速路堵车>,文中还特意插入了一张高速路堵车图片,以增加文章的可读性.但是,令笔者不曾想到的是,仅仅一张高速路堵车图片不料却给读者来带一定的流量.由于,该站已经被

soapui-soapUI中的groovy获取jn格式的数据

问题描述 soapUI中的groovy获取jn格式的数据 我是想获取到如下response中sessionId值 { "message": "OK", "status": 2000000, "data": { "expire": 1433292870907, "sessionId": "64a866105bb0926c6a5371ad2bf71ca4", "

android-从EditText中获取带格式的文本

问题描述 从EditText中获取带格式的文本 我有一个编辑文本,格式是这样 " This is a BOLD Text " 以及" This is a ITALIC Text " 如果从编辑文本获取,就会得到没有格式的"This is a BOLD Text"和"This is a ITALIC Text" 怎么样显示成带粗体和斜体格式的样子? " This is a BOLD Text " and &q

PHP生成和获取XML格式数据实现代码

生成XML格式数据 我们假设系统中有一张学生信息表student,需要提供给第三方调用,并有id,name,sex,age分别记录学生的姓名.性别.年龄等信息.  代码如下 复制代码 CREATE TABLE `student` (    `id` int(11) NOT NULL auto_increment,    `name` varchar(50) NOT NULL,    `sex` varchar(10) NOT NULL,    `age` smallint(3) NOT NULL