按比例缩小图片类(无组件)

 

没有测试过,不知道是缩小图片还是 压缩图片大小!

<%
Class possible
 
dim aso
 
Private Sub Class_Initialize
  
set aso=CreateObject("Adodb.Stream")
  aso.Mode
=3
  aso.Type
=1
  aso.Open
 
End Sub
 
Private Sub Class_Terminate
  
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
  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
  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
  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 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
 
 
Function readX(pic_path)
   
Set fso1 = server.CreateObject("Scripting.FileSystemObject")
   
Set f1 = fso1.GetFile(pic_path)
   ext
=fso1.GetExtensionName(pic_path)
   
select case ext
     
case "gif","bmp","jpg","png":
    arr
=getImageSize(f1.path)
    Response.Write arr(
1)
     
case "swf"
    arr
=pp.getimagesize(f1.path)
    Response.Write arr(
1)
   
end select
   
Set f1=nothing
   
Set fso1=nothing
 
End Function

 
Function readY(pic_path)
   
Set fso1 = server.CreateObject("Scripting.FileSystemObject")
   
Set f1 = fso1.GetFile(pic_path)
   ext
=fso1.GetExtensionName(pic_path)
   
select case ext
     
case "gif","bmp","jpg","png":
    arr
=getImageSize(f1.path)
    Response.Write arr(
2)
     
case "swf"
    arr
=pp.getimagesize(f1.path)
    Response.Write arr(
2)
   
end select
   
Set f1=nothing
   
Set fso1=nothing
 
End Function
End Class
%
>

例子:

<!--#include file="picXY.asp"-->
<%
 
set pp=new possible
 pp.readX(
"E:workg.jpg")
 pp.readY(
"E:workg.jpg")
%
>
 
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值