..:: MX Studio Fóruns ::..: recuperar a largura, altura e profundidade de um JPG e GIF - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

recuperar a largura, altura e profundidade de um JPG e GIF

#1 User is offline   xanburzum 

  • Group: Administrador
  • Posts: 2377
  • Joined: 04-November 08

Posted 27 February 2010 - 07:11 PM

Este código irá permitir que o programador para recuperar a largura, altura e profundidade de um JPG e GIF que estão hospedados remotamente

CÓDIGO
function GetBytes(objHTTP, offset, bytes)

    Dim SizeofFile
    on error resume next
    SizeofFile = objHTTP.getResponseHeader("Content-Length")
    'gets the size of the file from the HTTP header    
    if offset > 0 then 'start getting bytes NOT at the beginning
    strbuff = midb(objHTTP.responseBody, offset, bytes)
    end if
    if bytes = -1 then        ' Get All!
       GetBytes = objHTTP.responseBody  'ReadAll
    else 'start at front and go some odd distance
       GetBytes = midb(objHTTP.responseBody, 1, bytes)
    end if
end function


function lngConvert(strTemp)
    lngConvert = clng(ascb(leftb(strTemp, 1)) + ((ascb(rightb(strTemp, 1)) * 256)))
end function

function lngConvert2(strTemp)
    lngConvert2 = clng(ascb(rightb(strTemp, 1)) + ((ascb(leftb(strTemp, 1)) * 256)))
end function
'''''lngconvert was taken from Mike Shaffer's IMGSZ
  
   function getSize(URL, width, height, depth, flType)

    dim PNGflType
    dim GIFflType
    dim BMPflType
    dim flTypeOf
    dim obj
    flTypeOf = ""
    flType = "(unknown)"
    Set obj = Server.CreateObject ("Microsoft.XMLHTTP")
    obj.open "GET", URL, False
    obj.send
    'Here we have gotten the data for the image file
    getSize = False
    PNGflType = chr(137) & chr(80) & chr(78)
    GIFflType = chrb(71) & chrb(73) & chrb(70)
    BMPflType = chr(66) & chr(77)
    'Here are the definitions for the image flTypes, I only support GIF and JPG but you can add others :)
    flTypeOf = GetBytes(obj, 0, 3)
    'Find out what flType of image it is
    if flTypeOf = GIFflType then    'It is a GIF!!!
    flType = "GIF"    
    strbuffer = getbytes(obj, 0, -1) 'get all of the data of the image
    width= lngconvert(midb(strbuffer, 7, 2))
    Height = lngconvert(midb(strbuffer, 9, 2))
    Depth = 2 ^ ((ascb(GetBytes(obj, 11, 1)) and 7) + 1)
    'It is very important to note the ascB and midB, images ARE binary files
    getSize = True
    else
    strBuff = GetBytes(obj, 0, -1)        ' get the entire file
    SizeofFile = lenb(strBuff)
    flgFound = 0
    strTarget = chrb(255) & chrb(216) & chrb(255)
    flgFound = instrb(strBuff, strTarget)
    char = (midb(strbuff, 1, 3)) 'check out the first few characters
    if flgFound = 0 then 'not a jpg, and definatly not a GIF
     exit function
    end if
    flType = "JPG"
    lngPos = flgFound + 2
    ExitLoop = false
    do while ExitLoop = False and lngPos < SizeofFile
          do while ascb(midb(strBuff, lngPos, 1)) = 255 and lngPos < SizeofFile
             lngPos = lngPos + 1
          loop
          'search through to find the data
          if ascb(midb(strBuff, lngPos, 1)) < 192 or ascb(midb(strBuff, lngPos, 1)) > 195 then
             lngMarkerSize = lngConvert2(midb(strBuff, lngPos + 1, 2))
             lngPos = lngPos + lngMarkerSize  + 1
          else
             ExitLoop = True 'have everything we need
          end if

    loop

          if ExitLoop = False then 'oh no!

             Width = -1
             Height = -1
             Depth = -1
    
          else

             Height = lngConvert2(midb(strBuff, lngPos + 4, 2))
             Width = lngConvert2(midb(strBuff, lngPos + 6, 2))
             Depth = 2 ^ (ascb(midb(strBuff, lngPos + 8, 1)) * 8)
             getSize = True

          end if
                  
    end if
  
set obj = Nothing
end function

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)