转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
利用VBScript及ADODB.Steam获取部分格式图象长宽         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:798 更新时间:2009/4/23 10:43:59
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


[Web开发]使用XMLHttp和ADODB.Stream取得远程文件并保存到本…  [Web开发]ASP中利用ADODB.Stream对象将字节流转换为字符流
[Web开发]指南:从MySQL转向ADODB(2)  [Web开发]指南:从MySQL转向ADODB(1)
[Web开发]面向对象的asp编程之五--adodb的类封装  [Web开发]PHP技巧--通过COM使用ADODB
[Web开发]adodb Stream 详细用法  [Web开发]MMCACHE+PHP5+ADODB出现内存溢出的问题
[Web开发]smarty+adodb+部分自定义类的php开发模式  [Web开发]adodb Stream 详细用法     选择自 3cts 的 Blog
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台