asp-classic - 如何使用服务器端 vbscript 获取图像宽度?经典的ASP

标签 asp-classic vbscript

几天来我一直在尝试寻找一种方法来获取驻留在我们服务器上的 .png 文件的图像宽度。我正在尝试读取文件的前 24 个字节并从字节 17-20 解析出宽度。在网上找了好几个套路都没有成功。奇怪的是,我似乎从字节 21-24 中得到了从十六进制解码为十进制的高度。我已经使用十六进制查看器验证了文件内容并且文件是好的。这是例程的主要部分:

Function ReadPNG(fichero)
Dim fso, ts, s, HW, nbytes
    HW = Array("0", "0")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(Server.MapPath("\forums\attachments/" & fichero), 1)
    s = Right(ts.Read(24), 8)
    HW(0) = HexToDec(HexAt(s,3) & HexAt(s,4))
    HW(1) = HexToDec(HexAt(s,7) & HexAt(s,8))
    ts.Close
    ReadPNG = HW
End Function

Function HexAt(s, n)
    HexAt = Hex(AscAt(s, n))
End Function

Function HexToDec(ByVal HexVal)

Dim i, num, part
num = 0
For I = 1 to Len(HexVal)
    part = Mid(StrReverse(UCase(HexVal)), I, 1)
    If IsNumeric(part) Then
        num = num + (CInt(part) * 16 ^ (I - 1) )
    Else
        num = num + ( (Asc(part) - 55) * 16^(I - 1) )
    End If
Next

HexToDec = num

End Function

例如,我的文件在宽度字节(十进制 384)中有十六进制“00 00 01 80” 和heigth字节中的十六进制“00 00 01 32”(十进制306)

我的高度为 306,但宽度返回“0011”(十进制 17)。

我完全被难住了!我也不必使用此例程。

谢谢, 吉姆

最佳答案

这是我前一段时间看到的帖子,看起来它可能会简化一些事情。我还没有测试过,所以让我知道你的结果。

<%
dim iWidth, iheight
sub ImgDimension(img)
dim myImg, fs
Set fs= CreateObject("Scripting.FileSystemObject")
if not fs.fileExists(img) then exit sub
set myImg = loadpicture(img)
iWidth = round(myImg.width / 26.4583)
iheight = round(myImg.height / 26.4583)
set myImg = nothing
end sub

ImgDimension(Server.MapPath("server image file"))
%> 

查看此处的帖子:http://www.haneng.com/asp-forum/ASP---Get-Image-Size_12971.html

更新:看到此方法在 64 位中不起作用。这是另一种替代方法的链接:https://web.archive.org/web/20210608180909/http://www.4guysfromrolla.com/webtech/050300-1.shtml

关于asp-classic - 如何使用服务器端 vbscript 获取图像宽度?经典的ASP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397101/

相关文章:

debugging - 如何让 Microsoft Script Debugger 与 64 位 Windows 7 一起使用?

vbscript 从未知目录中的 .exe 创建快捷方式

.net - 使用 VBScript 中的 System.Globalization.CultureInfo

vbscript - vbs taskkill 按名称

string - ASP 经典字符串变量的最大大小?

sql-server-2008 - 在 ADO 中检索数据库消息(例如, "Print"语句输出但不是错误消息)

apache - 经典 ASP 启用 Windows 身份验证但 Request.ServerVariables (“LOGON_USER” ) 有时会返回错误的用户名

mysql - 为什么 isNULL 在带有参数化查询的 vbScript 中返回空字符串

asp.net - 经典的asp sql连接字符串错误

vbscript - 在 Toad Data Modeller 中运行 VBS 脚本