利用ASP获取设置图片尺寸大小

    技术2022-05-11  56

    < %imgpath = " default_22.gif " response.write  " <img src=' " & imgpath & " ' border=0  " & SetAutoImg( 280 , 260 ,imgpath) & " ><br>宽: " & GetImgW(ImgPath) & " ;高: " & GetImgH(ImgPath) function  GetImgW(ImgPath)     set  pp = new  imgInfo     w = pp.imgW(server.mappath(ImgPath))      set  pp = nothing      GetImgW = w end function function  GetImgH(ImgPath)     set  pp = new  imgInfo     h = pp.imgH(server.mappath(ImgPath))      set  pp = nothing      GetImgH = h end function function  SetAutoImg(fitWidth,fitHeight,ImgPath)    hhRtn = 0     wwRtn = 0      set  pp = new  imgInfo     ww = pp.imgW(server.mappath(ImgPath))     hh = pp.imgH(server.mappath(ImgPath))          set  pp = nothing       if  ww > 0   and  hh > 0   then          if  ww / hh >= FitWidth / FitHeight  then             wwRtn = fitWidth            hhRtn = (hh * FitWidth) / ww         else             hhRtn = fitHeight            wwRtn = (ww * FitHeight) / hh         end   if      end   if     SetAutoImg = "  height=' " & hhRtn & " ' " & "  width=' " & wwRtn & " " end function class imgInfo      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    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     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           Public   Function  imgW(pic_path)      Set  fso1  =  server.CreateObject(  " Scripting.FileSystemObject " )      If  (fso1.FileExists(pic_path))  Then       Set  f1  =  fso1.GetFile(pic_path)     ext = fso1.GetExtensionName(pic_path)      select   case  ext      case   " gif " , " bmp " , " jpg " , " png " :     arr = getImageSize(f1.path)     imgW  =  arr( 1 )      end   select       Set  f1 = nothing       else      imgW  =   0       End   if       Set  fso1 = nothing       End Function           Public   Function  imgH(pic_path)      Set  fso1  =  server.CreateObject(  " Scripting.FileSystemObject " )      If  (fso1.FileExists(pic_path))  Then       Set  f1  =  fso1.GetFile(pic_path)     ext = fso1.GetExtensionName(pic_path)      select   case  ext      case   " gif " , " bmp " , " jpg " , " png " :     arr = getImageSize(f1.path)     imgH  =  arr( 2 )      end   select       Set  f1 = nothing       else      imgH  =   0       End   if       Set  fso1 = nothing       End Function   End  Class% >  

    最新回复(0)