Tag: 图片大小预览模式: 普通 | 列表

ASP不能正确获得JPG图片的尺寸

 一般情况下,用下面的函数是可以正确获得JPG(不能是JPEG)图片的像素大小的,比如1024*768PIX这样的。

ASP/Visual Basic代码
  1. '获取图片的像素大小  
  2. Class imgInfo  
  3.     dim aso  
  4.     Private Sub Class_Initialize  
  5.         set aso=CreateObject("Adodb.Stream")  
  6.         aso.Mode=3  
  7.         aso.Type=1  
  8.         aso.Open  
  9.     End Sub  
  10.     Private Sub Class_Terminate  
  11.         err.clear  
  12.         set aso=nothing  
  13.     End Sub  
  14.   
  15.     Private Function Bin2Str(Bin)  
  16.         Dim I, Str  
  17.         For I=1 to LenB(Bin)  
  18.         clow=MidB(Bin,I,1)  
  19.         If ASCB(clow)<128 Then  
  20.         Str = Str & Chr(ASCB(clow))  
  21.         else  
  22.         I=I+1  
  23.         If I <= LenB(Bin) Then Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))  
  24.         End If  
  25.         Next  
  26.         Bin2Str = Str  
  27.     End Function  
  28.   
  29.     Private Function Num2Str(num,base,lens)  
  30.     dim ret  
  31.     ret = ""  
  32.     while(num>=base)  
  33.     ret = (num mod base) & ret  
  34.     num = (num - num mod base)/base  
  35.     wend  
  36.     Num2Str = right(string(lens,"0") & num & ret,lens)  
  37.     End Function  
  38.   
  39.     Private Function Str2Num(str,base)  
  40.         dim ret  
  41.         ret = 0  
  42.         for i=1 to len(str)  
  43.         ret = ret *base + cint(mid(str,i,1))  
  44.         next  
  45.         Str2Num=ret  
  46.     End Function  
  47.   
  48.     Private Function BinVal(bin)  
  49.     dim ret  
  50.     ret = 0  
  51.     for i = lenb(bin) to 1 step -1  
  52.     ret = ret *256 + ascb(midb(bin,i,1))  
  53.     next  
  54.     BinVal=ret  
  55.     End Function  
  56.   
  57.     Private Function BinVal2(bin)  
  58.     dim ret  
  59.     ret = 0  
  60.     for i = 1 to lenb(bin)  
  61.     ret = ret *256 + ascb(midb(bin,i,1))  
  62.     next  
  63.     BinVal2=ret  
  64.     End Function  
  65.   
  66.     Private Function getImageSize(filespec,filefrom)  
  67.     dim ret(3)  
  68.     select case filefrom  
  69.         case 1  
  70.             '1为同域文件,否则为异域文件  
  71.             aso.LoadFromFile(filespec)  
  72.         case 2  
  73.             ASO.Write filespec  
  74.             ASO.Position = 0  
  75.     end select  
  76.     bFlag=ASO.Read(3)  
  77.     select case hex(binVal(bFlag))  
  78.     case "4E5089":  
  79.     aso.read(15)  
  80.     ret(0)="PNG"  
  81.     ret(1)=BinVal2(aso.read(2))  
  82.     aso.read(2)  
  83.     ret(2)=BinVal2(aso.read(2))  
  84.     case "464947":  
  85.     aso.read(3)  
  86.     ret(0)="GIF"  
  87.     ret(1)=BinVal(aso.read(2))  
  88.     ret(2)=BinVal(aso.read(2))  
  89.     case "535746":  
  90.     aso.read(5)  
  91.     binData=aso.Read(1)  
  92.     sConv=Num2Str(ascb(binData),2 ,8)  
  93.     nBits=Str2Num(left(sConv,5),2)  
  94.     sConv=mid(sConv,6)  
  95.     while(len(sConv)<nBits*4)  
  96.     binData=aso.Read(1)  
  97.     sConv=sConv&Num2Str(ascb(binData),2 ,8)  
  98.     wend  
  99.     ret(0)="SWF"  
  100.     ret(1)=int(abs(Str2Num(mid(sConv,1*nBits+1,nBits),2)-Str2Num(mid(sConv,0*nBits+1,nBits),2))/20)  
  101.     ret(2)=int(abs(Str2Num(mid(sConv,3*nBits+1,nBits),2)-Str2Num(mid(sConv,2*nBits+1,nBits),2))/20)  
  102.     case "FFD8FF":  
  103.     do  
  104.     do: p1=binVal(aso.Read(1)): loop while p1=255 and not aso.EOS  
  105.     If p1>191 and p1<196 Then exit do else aso.read(binval2(aso.Read(2))-2)  
  106.     do:p1=binVal(aso.Read(1)):loop while p1<255 and not aso.EOS  
  107.     loop while true  
  108.     aso.Read(3)  
  109.     ret(0)="JPG"  
  110.     ret(2)=binval2(aso.Read(2))  
  111.     ret(1)=binval2(aso.Read(2))  
  112.     case else:  
  113.     If left(Bin2Str(bFlag),2)="BM" Then  
  114.     aso.Read(15)  
  115.     ret(0)="BMP"  
  116.     ret(1)=binval(aso.Read(4))  
  117.     ret(2)=binval(aso.Read(4))  
  118.     else  
  119.     ret(0)=""  
  120.     End If  
  121.     end select  
  122.     ret(3)="width=""" & ret(1) &""" height=""" & ret(2) &""""  
  123.     getimagesize=ret  
  124.     End Function  
  125.   
  126.     Public Function imgW(pic_path,filefrom)  
  127.         '参数filefrom是判断文件是远程http开头的还是本地的  
  128.         '1为本地,2为远程  
  129.         select case filefrom  
  130.             case 1  
  131.                 Set fso1 = server.CreateObject("Scripting.FileSystemObject")  
  132.                 If (fso1.FileExists(pic_path)) Then  
  133.                     Set f1 = fso1.GetFile(pic_path)  
  134.                     ext=fso1.GetExtensionName(pic_path)  
  135.                     select case ext  
  136.                     case "gif","bmp","jpg","png":  
  137.                     arr=getImageSize(f1.path,1)  
  138.                     imgW = arr(1)  
  139.                     end select  
  140.                     Set f1=nothing  
  141.                 else  
  142.                     imgW = 0  
  143.                 End If  
  144.                 Set fso1=nothing  
  145.             case 2  
  146.                 Arr=GetImageSize(pic_path,2)  
  147.                 imgW = Arr(1)  
  148.         end select  
  149.     End Function  
  150.   
  151.     Public Function imgH(pic_path,filefrom)  
  152.         select  case filefrom  
  153.             case 1  
  154.                 Set fso1 = server.CreateObject("Scripting.FileSystemObject")  
  155.                 If (fso1.FileExists(pic_path)) Then  
  156.                 Set f1 = fso1.GetFile(pic_path)  
  157.                 ext=fso1.GetExtensionName(pic_path)  
  158.                 select case ext  
  159.                 case "gif","bmp","jpg","png":  
  160.                 arr=getImageSize(f1.path,1)  
  161.                 imgH = arr(2)  
  162.                 end select  
  163.                 Set f1=nothing  
  164.                 else  
  165.                 imgH = 0  
  166.                 End If  
  167.                 Set fso1=nothing  
  168.             case 2  
  169.                 Arr=getImageSize(pic_path,2)  
  170.                 imgH = Arr(2)  
  171.         end select  
  172.     End Function  
  173. End Class  

但下面这两个图片却不行,没办法获得。

图片是用iPhone 5S手机拍摄的,并在电脑上简单编辑过的。

解决的方法比较简单直接,把图片转换成PNG的,就可以了。

查看更多...

Tags: 图片尺寸 图片大小 ASP

分类:网络 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 911

用CSS防止图片太大撑破网页布局的方法

用户可以自主上传图片的信息发布系统,经常会遇到图上太大而把页面的DIV布局撑破的情况,用下面的CSS代码,可以按图片的高度与宽度的比例来缩小图片的宽度至设定的宽度最大值。

.m_cont_txt img{max-width:750px;_width:750px;width:e­xpression(this.width >750 ? "750px":this.width);overflow:hidden;}

其中

查看更多...

Tags: CSS 图片大小 DIV 布局

分类:网络 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3710
<img src='http://img.kqyx.cn/logo/kqyx_logo.gif' onload= 'javascript:if(this.width> 100)this.width=100;if(this.height> 80)this.height=80'>


这样可以按宽100px,高80px的大小来显示远程的图片http://img.kqyx.cn/logo/kqyx_logo.gif

查看更多...

Tags: 图片大小 文件大小 远程文件

分类:网络 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4286