-
คลาส ImgWHInfo ''ภาพพื้นหลัง宽度和高度的类,支持JPG,GIF,PNG,BMP
ดิม ASO
คลาสย่อยส่วนตัว_เริ่มต้น
ตั้งค่า ASO=Server.CreateObject(ADODB.Stream)
ASO.Mode=3
ASO.ประเภท=1
ASO.เปิด
จบหมวดย่อย
Class_Terminate ย่อยส่วนตัว
ผิดพลาด.เคลียร์
ตั้งค่า ASO=ไม่มีอะไร
จบหมวดย่อย
ฟังก์ชั่นส่วนตัว Bin2Str(Bin)
ดิม 1, Str
สำหรับ I=1 ถึง LenB(Bin)
clow=MidB(ถัง,I,1)
ถ้า ASCB(โคลว์)<128 แล้ว
Str = Str & Chr(ASCB(โคลว์))
อื่น
ฉัน=ฉัน+1
ถ้าฉัน <= LenB(Bin) ดังนั้น Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
สิ้นสุดถ้า
ต่อไป
Bin2Str = Str
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว Num2Str(หมายเลข,ฐาน,เลนส์)
ดิม เร็ต
รีท =
ในขณะที่(จำนวน>=ฐาน)
Ret = (จำนวนฐาน Mod) & Ret
Num = (ตัวเลข - จำนวนฐาน Mod)/ฐาน
เวนด์
Num2Str = ขวา (สตริง (เลนส์, 0) & Num & Ret, เลนส์)
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว Str2Num (Str, ฐาน)
ดิม เร็ต, ไอ
รีท = 0
สำหรับ I=1 ถึง Len(Str)
Ret = Ret *ฐาน + Cint(กลาง(Str,I,1))
ต่อไป
Str2Num=ถอยกลับ
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว BinVal(Bin)
ดิม เร็ต, ไอ
รีท = 0
สำหรับ I = LenB(Bin) ถึง 1 ขั้นตอน -1
Ret = Ret *256 + AscB(MidB(Bin,I,1))
ต่อไป
BinVal=เกษียณ
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว BinVal2(Bin)
ดิม เร็ต, ไอ
รีท = 0
สำหรับ I = 1 ถึง LenB(Bin)
Ret = Ret *256 + AscB(MidB(Bin,I,1))
ต่อไป
BinVal2=ถอนตัว
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นส่วนตัว GetImageSize (filespec)
Dim bFlag
ดิมเร็ต(3)
ASO.LoadFromFile(รายละเอียดไฟล์)
bFlag=ASO.อ่าน(3)
เลือก Case Hex(binVal(bFlag))
กรณี 4E5089:
ASO.อ่าน(15)
ret(0)=PNG
ret(1)=BinVal2(ASO.อ่าน(2))
ASO.อ่าน(2)
ret(2)=BinVal2(ASO.อ่าน(2))
กรณี 464947:
ASO.อ่าน(3)
ret(0)=gif
ret(1)=BinVal(ASO.อ่าน(2))
ret(2)=BinVal(ASO.อ่าน(2))
กรณี 535746:
ASO.อ่าน(5)
binData=ASO.อ่าน(1)
sConv=Num2Str(ascb(binData),2 ,8)
nBits=Str2Num(ซ้าย(sConv,5),2)
sConv=กลาง(sConv,6)
ในขณะที่(len(sConv)<nBits*4)
binData=ASO.อ่าน(1)
sConv=sConv&Num2Str(AscB(binData),2 ,8)
เวนด์
ret(0)=SWF
ret(1)=Int(Abs(Str2Num(กลาง(sConv,1*nBits+1,nBits),2)-Str2Num(กลาง(sConv,0*nBits+1,nBits),2))/20)
ret(2)=Int(Abs(Str2Num(กลาง(sConv,3*nBits+1,nBits),2)-Str2Num(กลาง(sConv,2*nBits+1,nBits),2))/20)
เคส FFD8FF:
ทำ
ทำ: p1=binVal(ASO.Read(1)): วนซ้ำในขณะที่ p1=255 และไม่ใช่ ASO.EOS
ถ้า p1>191 และ p1<196 ให้ออกจาก Do Else ASO.read(binval2(ASO.Read(2))-2)
ทำ:p1=binVal(ASO.Read(1)):วนซ้ำในขณะที่ p1<255 และไม่ใช่ ASO.EOS
วนซ้ำในขณะที่เป็นจริง
ASO.อ่าน(3)
ret(0)=JPG
ret(2)=binval2(ASO.อ่าน(2))
ret(1)=binval2(ASO.อ่าน(2))
กรณีอื่น:
ถ้าซ้าย(Bin2Str(bFlag),2)=BM จากนั้น
ASO.อ่าน(15)
รีต(0)=BMP
ret(1)=binval(ASO.อ่าน(4))
ret(2)=binval(ASO.อ่าน(4))
อื่น
ซ้ำ(0)=
สิ้นสุดถ้า
สิ้นสุดการเลือก
ret(3)=ความกว้าง= & ret(1) & ความสูง= & ret(2) &
getimagesize=ret
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นสาธารณะ imgW(IMGPath)
หรี่ FSO, IMGFile, FileExt, Arr
ตั้งค่า FSO = Server.CreateObject (Scripting.FileSystemObject)
ถ้า (FSO.FileExists(IMGPath)) แล้ว
ตั้งค่า IMGFile = FSO.GetFile(IMGPath)
FileExt=FSO.GetExtensionName(IMGPath)
เลือก Case FileExt
กรณี gif,bmp,jpg,png:
Arr=GetImageSize(IMGFile.Path)
imgW = อร(1)
สิ้นสุดการเลือก
ตั้งค่า IMGFile=Nothing
อื่น
imgW = 0
สิ้นสุดถ้า
ตั้งค่า FSO=ไม่มีอะไร
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นสาธารณะ imgH (IMGPath)
หรี่ FSO, IMGFile, FileExt, Arr
ตั้งค่า FSO = server.CreateObject(Scripting.FileSystemObject)
ถ้า (FSO.FileExists(IMGPath)) แล้ว
ตั้งค่า IMGFile = FSO.GetFile(IMGPath)
FileExt=FSO.GetExtensionName(IMGPath)
เลือก Case FileExt
กรณี gif,bmp,jpg,png:
Arr=getImageSize(IMGFile.Path)
imgH = อาร์(2)
สิ้นสุดการเลือก
ตั้งค่า IMGFile=Nothing
อื่น
imgH = 0
สิ้นสุดถ้า
ตั้งค่า FSO=ไม่มีอะไร
ฟังก์ชันสิ้นสุด
จบคลาส
-
-
IMGPath=Test.jpg
ตั้งค่า PP = ImgWHInfo ใหม่
W = PP.imgW (เซิร์ฟเวอร์ Mappath (IMGPath))
H = PP.imgH (เซิร์ฟเวอร์ Mappath (IMGPath))
ตั้ง pp = ไม่มีเลย
-
-
หรี่ W, PXHeight
Dim Pp '//สัดส่วน
ถ้า W=0 หรือ W= แล้ว
PXความกว้าง=0
PXความสูง=0
อื่น
Pp=FormatNumber(W/H,2) '//长宽比
สิ้นสุดถ้า
ถ้า W>=H แล้ว
ถ้า W>=300 แล้ว
PXความกว้าง=300
PXHeight=FormatNumber(300/Pp,0)
อื่น
PXWidth=W
PXHeight=H
สิ้นสุดถ้า
อื่น
ถ้า PHeight>=260 แล้ว
PXความสูง=260
PXWidth=หมายเลขรูปแบบ(260*Pp,0)
อื่น
PXWidth=W
PXHeight=H
สิ้นสุดถ้า
สิ้นสุดถ้า
การตอบสนองเขียน (PXWidth)
-
<img src=Test.jpg เส้นขอบ=0 ความกว้าง=<%=PXWidth%>
ความสูง=<%=PXความสูง%>>