用FSO获得图片文件的信息(大小,宽,高)

转载 2004年08月09日 20:57:00
<%
'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'':::  BMP,  GIF,  JPG  and  PNG  :::
'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'':::  :::
'':::  This  function  gets  a  specified  number  of  bytes  from  any  :::
'':::  file,  starting  at  the  offset  (base  1)  :::
'':::  :::
'':::  Passed:  :::
'':::  flnm  =>  Filespec  of  file  to  read  :::
'':::  offset  =>  Offset  at  which  to  start  reading  :::
'':::  bytes  =>  How  many  bytes  to  read  :::
'':::  :::
'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
function  GetBytes(flnm,  offset,  bytes)
Dim  objFSO
Dim  objFTemp
Dim  objTextStream
Dim  lngSize
on  error  resume  next
Set  objFSO  =  CreateObject("Scripting.FileSystemObject")

''  First,  we  get  the  filesize
Set  objFTemp  =  objFSO.GetFile(flnm)
lngSize  =  objFTemp.Size
set  objFTemp  =  nothing
fsoForReading  =  1
Set  objTextStream  =  objFSO.OpenTextFile(flnm,  fsoForReading)
if  offset  >  0  then
strBuff  =  objTextStream.Read(offset  -  1)
end  if
if  bytes  =  -1  then  ''  Get  All!
GetBytes  =  objTextStream.Read(lngSize)  ''ReadAll
else
GetBytes  =  objTextStream.Read(bytes)
end  if
objTextStream.Close
set  objTextStream  =  nothing
set  objFSO  =  nothing
end  function 
'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'':::  :::
'':::  Functions  to  convert  two  bytes  to  a  numeric  value  (long)  :::
'':::  (both  little-endian  and  big-endian)  :::
'':::  :::
'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
function  lngConvert(strTemp)
lngConvert  =  clng(asc(left(strTemp,  1))  +  ((asc(right(strTemp,  1))  *  256)))
end  function
function  lngConvert2(strTemp)
lngConvert2  =  clng(asc(right(strTemp,  1))  +  ((asc(left(strTemp,  1))  *  256)))
end  function

'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'':::  :::
'':::  This  function  does  most  of  the  real  work.  It  will  attempt  :::
'':::  to  read  any  file,  regardless  of  the  extension,  and  will  :::
'':::  identify  if  it  is  a  graphical  image.  :::
'':::  :::
'':::  Passed:  :::
'':::  flnm  =>  Filespec  of  file  to  read  :::
'':::  width  =>  width  of  image  :::
'':::  height  =>  height  of  image  :::
'':::  depth  =>  color  depth  (in  number  of  colors)  :::
'':::  strImageType=>  type  of  image  (e.g.  GIF,  BMP,  etc.)  :::
'':::  :::
'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
function  gfxSpex(flnm,  width,  height,  depth,  strImageType)
dim  strPNG 
dim  strGIF
dim  strBMP
dim  strType
strType  =  ""
strImageType  =  "(unknown)"
gfxSpex  =  False
strPNG  =  chr(137)  &  chr(80)  &  chr(78)
strGIF  =  "GIF"
strBMP  =  chr(66)  &  chr(77)
strType  =  GetBytes(flnm,  0,  3)
if  strType  =  strGIF  then  ''  is  GIF
strImageType  =  "GIF"
Width  =  lngConvert(GetBytes(flnm,  7,  2))
Height  =  lngConvert(GetBytes(flnm,  9,  2))
Depth  =  2  ^  ((asc(GetBytes(flnm,  11,  1))  and  7)  +  1)
gfxSpex  =  True
elseif  left(strType,  2)  =  strBMP  then  ''  is  BMP
strImageType  =  "BMP"
Width  =  lngConvert(GetBytes(flnm,  19,  2))
Height  =  lngConvert(GetBytes(flnm,  23,  2))
Depth  =  2  ^  (asc(GetBytes(flnm,  29,  1)))
gfxSpex  =  True
elseif  strType  =  strPNG  then  ''  Is  PNG
strImageType  =  "PNG"
Width  =  lngConvert2(GetBytes(flnm,  19,  2))
Height  =  lngConvert2(GetBytes(flnm,  23,  2))
Depth  =  getBytes(flnm,  25,  2)
select  case  asc(right(Depth,1))
case  0
Depth  =  2  ^  (asc(left(Depth,  1)))
gfxSpex  =  True
case  2
Depth  =  2  ^  (asc(left(Depth,  1))  *  3)
gfxSpex  =  True
case  3
Depth  =  2  ^  (asc(left(Depth,  1)))  ''8
gfxSpex  =  True
case  4
Depth  =  2  ^  (asc(left(Depth,  1))  *  2)
gfxSpex  =  True
case  6
Depth  =  2  ^  (asc(left(Depth,  1))  *  4)
gfxSpex  =  True
case  else
Depth  =  -1
end  select

else
strBuff  =  GetBytes(flnm,  0,  -1)  ''  Get  all  bytes  from  file
lngSize  =  len(strBuff)
flgFound  =  0
strTarget  =  chr(255)  &  chr(216)  &  chr(255)
flgFound  =  instr(strBuff,  strTarget)
if  flgFound  =  0  then
exit  function
end  if
strImageType  =  "JPG"
lngPos  =  flgFound  +  2
ExitLoop  =  false
do  while  ExitLoop  =  False  and  lngPos  <  lngSize

do  while  asc(mid(strBuff,  lngPos,  1))  =  255  and  lngPos  <  lngSize
lngPos  =  lngPos  +  1
loop
if  asc(mid(strBuff,  lngPos,  1))  <  192  or  asc(mid(strBuff,  lngPos,  1))  >  195  then
lngMarkerSize  =  lngConvert2(mid(strBuff,  lngPos  +  1,  2))
lngPos  =  lngPos  +  lngMarkerSize  +  1
else
ExitLoop  =  True
end  if
loop
''
if  ExitLoop  =  False  then
Width  =  -1
Height  =  -1
Depth  =  -1
else
Height  =  lngConvert2(mid(strBuff,  lngPos  +  4,  2))
Width  =  lngConvert2(mid(strBuff,  lngPos  +  6,  2))
Depth  =  2  ^  (asc(mid(strBuff,  lngPos  +  8,  1))  *  8)
gfxSpex  =  True
end  if

end  if
end  function

'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'':::  Test  Harness  :::
'':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

''  To  test,  we''ll  just  try  to  show  all  files  with  a  .GIF  extension  in  the  root  of  C:
Set  objFSO  =  CreateObject("Scripting.FileSystemObject")
Set  objF  =  objFSO.GetFolder("c:/")
Set  objFC  =  objF.Files
response.write  "<table  border=""0""  cellpadding=""5"">"
For  Each  f1  in  objFC
if  instr(ucase(f1.Name),  ".GIF")  then
response.write  "<tr><td>"  &  f1.name  &  "</td><td>"  &  f1.DateCreated  &  "</td><td>"  &  f1.Size  &  "</td><td>"
if  gfxSpex(f1.Path,  w,  h,  c,  strType)  =  true  then
response.write  w  &  "  x  "  &  h  &  "  "  &  c  &  "  colors"
else
response.write  "  "
end  if
response.write  "</td></tr>"
end  if
Next
response.write  "</table>"
set  objFC  =  nothing
set  objF  =  nothing
set  objFSO  =  nothing

%>

php 获取远程图片大小 宽高

/** * 获取远程图片的宽高和体积大小 * * @param string $url 远程图片的链接 * @param string $type 获取...
  • wmsjlihuan
  • wmsjlihuan
  • 2016年07月14日 17:54
  • 2418

java基础—java获取图片的大小和尺寸(本地& 服务器)

java基础—java获取图片的大小和尺寸(本地& 服务器) java获取图片的大小和尺寸,有两种获取的源,一种是读取本地的图片获取大小和尺寸,一种是通过服务器上图片的地址获取图片的尺寸!下面整理出这...
  • u010648555
  • u010648555
  • 2016年06月12日 17:05
  • 10409

nodejs读取图片像素

之前在做H5时,有这么一个关于图片的问题,就是把一张图片裁剪得左右空白部分对称,图片背景为白色。这件事情说来也简单,读取图片的像素,分别检测左右空白部分的宽度,然后裁剪到一样即可 。接下来就涉及到读取...
  • dreamer2020
  • dreamer2020
  • 2016年06月15日 02:19
  • 4966

FSO文本文件操作,读取一个文件相关信息$

FSO读取一个文件相关信息的范例
  • sontin
  • sontin
  • 2013年08月13日 09:57
  • 664

javascript实现FileSystemObject(FSO)读取文件系统的驱动器信息

  • 2009年09月17日 16:31
  • 19KB
  • 下载

Android 获取app应用大小、手机内存信息、删除文件方法、获得文件大小

因为最近在做清理缓存的功能所以需要用到这些方法,下面就直接贴出代码了。 获取手机信息: /** * 获取手机内部剩余存储空间 * * @return */ public stat...
  • qq_25412055
  • qq_25412055
  • 2016年08月30日 17:52
  • 1722

(VS2015 C++)获取电脑文件夹下文件的名称,类型,大小,后缀信息

  • 2017年12月18日 17:22
  • 44.69MB
  • 下载

shopex强制设置远程图片列表页缩略图大小+文件+插件+补丁

  • 2013年05月31日 17:58
  • 2KB
  • 下载

java获得U盘根目录、读取图片视频头文件信息、获取视频时长

1、获得U盘根目录,例如我们取名U盘名称为"测试U盘",一般插入U盘后,在系统的H盘 /** * 得到系统U盘根目录 */ public String findURootPath(){ ...
  • HarderXin
  • HarderXin
  • 2014年03月13日 11:58
  • 2947

javascript通过文件头信息获取图片宽高

由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小,所以lightbox类效果为了让图片居中显示,导致其速度体验要比直接输出的差很多。而本文通过一个巧妙的方法让j...
  • taoliujun
  • taoliujun
  • 2011年09月15日 17:24
  • 1311
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用FSO获得图片文件的信息(大小,宽,高)
举报原因:
原因补充:

(最多只允许输入30个字)