在asp里如何判断显示图片的是横还是竖?在线等待。。

yangzong20 2011-03-03 02:58:08
我做了一个图片显示的功能,也就是右边显示小图,然后点击小图左边显示大图,这些功能我都做好了,但现在有一个问题,那就是我没办法去判断这个图是横的还是竖的,客户有要求是

左边大图比率:竖图533*800 横图800*533
右边小图自动比率:竖图94*141 横图141*94


该如何去判断图片是横的还是竖的呢?麻烦给小弟指导一下,万分感谢
...全文
139 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaifadi 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yangzong20 的回复:]

to hongmei85
我找到原因了,我发现只要重新载入图片,那么图片的宽和高都会变成0,这是为何呢?
我是通过表头传入照片名的

http://127.0.0.1:811/listimages_2.asp?image=201133161023906.jpg

只要切换到另外一张图片那么图片的宽和高都会显示为0这是为何呢?麻烦告知,谢谢
[/Quote]
IMGPath变量是路径,你把它输出来看看是否正确。如果正确,那个函数应该能正确算出图片的高和宽。为0应该是图片路径错了。
yangzong20 2011-03-03
  • 打赏
  • 举报
回复
to hongmei85
我找到原因了,我发现只要重新载入图片,那么图片的宽和高都会变成0,这是为何呢?
我是通过表头传入照片名的

http://127.0.0.1:811/listimages_2.asp?image=201133161023906.jpg

只要切换到另外一张图片那么图片的宽和高都会显示为0这是为何呢?麻烦告知,谢谢
yangzong20 2011-03-03
  • 打赏
  • 举报
回复
to hongmei85
我试了你的代码不行呀!以下是我的代码

<%
IMGPath="vg&admin/ewebeditor/UploadFile/"&arrayName(i)

Set PP = New ImgWHInfo
W = PP.imgW(Server.Mappath(IMGPath))
H = PP.imgH(Server.Mappath(IMGPath))
Set pp = Nothing

if W < H then
%>

<td height="100" align="center"><a href="listimages_2.asp?image=<%=arrayName(i)%>" target="I1"><img src="vg&admin/ewebeditor/UploadFile/<%=arrayName(i)%>" width="86" height="108" /></a></td>
<%else%>

<td height="100" align="center"><a href="listimages_2.asp?image=<%=arrayName(i)%>" target="I1"><img src="vg&admin/ewebeditor/UploadFile/<%=arrayName(i)%>" width="108" height="72" /></a></td>


<%
end if
%>
用了以后发现全都变成横的了,麻烦再帮看看,万分感谢
hongmei85 2011-03-03
  • 打赏
  • 举报
回复
asp里面可以这样获取图片的宽高
<% 
Class ImgWHInfo '获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP
Dim ASO
Private Sub Class_Initialize
Set ASO=Server.CreateObject("ADODB.Stream")
ASO.Mode=3
ASO.Type=1
ASO.Open
End Sub
Private Sub Class_Terminate
Err.Clear
Set ASO=Nothing
End Sub

Private Function Bin2Str(Bin)
Dim I, Str
For I=1 To LenB(Bin)
clow=MidB(Bin,I,1)
If ASCB(clow)<128 Then
Str = Str & Chr(ASCB(clow))
Else
I=I+1
If I <= LenB(Bin) Then Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
End If
Next
Bin2Str = Str
End Function

Private Function Num2Str(Num,Base,Lens)
Dim Ret
Ret = ""
While(Num>=Base)
Ret = (Num Mod Base) & Ret
Num = (Num - Num Mod Base)/Base
Wend
Num2Str = Right(String(Lens,"0") & Num & Ret,Lens)
End Function

Private Function Str2Num(Str,Base)
Dim Ret,I
Ret = 0
For I=1 To Len(Str)
Ret = Ret *base + Cint(Mid(Str,I,1))
Next
Str2Num=Ret
End Function

Private Function BinVal(Bin)
Dim Ret,I
Ret = 0
For I = LenB(Bin) To 1 Step -1
Ret = Ret *256 + AscB(MidB(Bin,I,1))
Next
BinVal=Ret
End Function

Private Function BinVal2(Bin)
Dim Ret,I
Ret = 0
For I = 1 To LenB(Bin)
Ret = Ret *256 + AscB(MidB(Bin,I,1))
Next
BinVal2=Ret
End Function

Private Function GetImageSize(filespec)
Dim bFlag
Dim Ret(3)
ASO.LoadFromFile(filespec)
bFlag=ASO.Read(3)
Select Case Hex(binVal(bFlag))
Case "4E5089":
ASO.Read(15)
ret(0)="PNG"
ret(1)=BinVal2(ASO.Read(2))
ASO.Read(2)
ret(2)=BinVal2(ASO.Read(2))
Case "464947":
ASO.read(3)
ret(0)="gif"
ret(1)=BinVal(ASO.Read(2))
ret(2)=BinVal(ASO.Read(2))
Case "535746":
ASO.read(5)
binData=ASO.Read(1)
sConv=Num2Str(ascb(binData),2 ,8)
nBits=Str2Num(left(sConv,5),2)
sConv=mid(sConv,6)
While(len(sConv)<nBits*4)
binData=ASO.Read(1)
sConv=sConv&Num2Str(AscB(binData),2 ,8)
Wend
ret(0)="SWF"
ret(1)=Int(Abs(Str2Num(Mid(sConv,1*nBits+1,nBits),2)-Str2Num(Mid(sConv,0*nBits+1,nBits),2))/20)
ret(2)=Int(Abs(Str2Num(Mid(sConv,3*nBits+1,nBits),2)-Str2Num(Mid(sConv,2*nBits+1,nBits),2))/20)
Case "FFD8FF":
Do
Do: p1=binVal(ASO.Read(1)): Loop While p1=255 And Not ASO.EOS
If p1>191 And p1<196 Then Exit Do Else ASO.read(binval2(ASO.Read(2))-2)
Do:p1=binVal(ASO.Read(1)):Loop While p1<255 And Not ASO.EOS
Loop While True
ASO.Read(3)
ret(0)="JPG"
ret(2)=binval2(ASO.Read(2))
ret(1)=binval2(ASO.Read(2))
Case Else:
If left(Bin2Str(bFlag),2)="BM" Then
ASO.Read(15)
ret(0)="BMP"
ret(1)=binval(ASO.Read(4))
ret(2)=binval(ASO.Read(4))
Else
ret(0)=""
End If
End Select
ret(3)="width=""" & ret(1) &""" height=""" & ret(2) &""""
getimagesize=ret
End Function

Public Function imgW(IMGPath)
Dim FSO,IMGFile,FileExt,Arr
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
If (FSO.FileExists(IMGPath)) Then
Set IMGFile = FSO.GetFile(IMGPath)
FileExt=FSO.GetExtensionName(IMGPath)
Select Case FileExt
Case "gif","bmp","jpg","png":
Arr=GetImageSize(IMGFile.Path)
imgW = Arr(1)
End Select
Set IMGFile=Nothing
Else
imgW = 0
End If
Set FSO=Nothing
End Function

Public Function imgH(IMGPath)
Dim FSO,IMGFile,FileExt,Arr
Set FSO = server.CreateObject("Scripting.FileSystemObject")
If (FSO.FileExists(IMGPath)) Then
Set IMGFile = FSO.GetFile(IMGPath)
FileExt=FSO.GetExtensionName(IMGPath)
Select Case FileExt
Case "gif","bmp","jpg","png":
Arr=getImageSize(IMGFile.Path)
imgH = Arr(2)
End Select
Set IMGFile=Nothing
Else
imgH = 0
End If
Set FSO=Nothing
End Function
End Class


IMGPath="img/22.jpg"

Set PP = New ImgWHInfo
W = PP.imgW(Server.Mappath(IMGPath))
H = PP.imgH(Server.Mappath(IMGPath))
Set pp = Nothing

Response.Write("<img src='"&IMGPath&"' border=0><br>宽:"&W&";高:"&H)
%>
  • 打赏
  • 举报
回复
由于当时源码格式有点乱,显示可能有些问题,看页面代码整理整理吧
  • 打赏
  • 举报
回复
你可以看看我N年前写的一个批量看图的JS工具,里面有取图片尺寸,体积及自动缩放和指定比例缩放等功能

http://blog.csdn.net/theforever/archive/2008/04/05/2252591.aspx
lzp4881 2011-03-03
  • 打赏
  • 举报
回复
var obj=document.getElementById("img")
宽=obj.width
高=obj.height
yangzong20 2011-03-03
  • 打赏
  • 举报
回复
to lzp4881
问题是如何取得图片的宽和高呀?麻烦告知,谢谢
lzp4881 2011-03-03
  • 打赏
  • 举报
回复
宽度>高度
就是横的嘛,反之就是竖的

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧