Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/07/2004, 02:18
Avatar de ElAprendiz
ElAprendiz
 
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 24 años, 7 meses
Puntos: 2
esta funcion te servira aunque es un poco lenta si lo utilizas con muchos archivos (galeria). el codigo lo iba a mostrar pronto. pero no habia tenido tiempo.

lo utilizas asi
ruta = "../img/demo.jpg"

If gfxSpex(Server.Mappath(ruta), w, h) then
'es una imagen valida (GIF o JPG)
response.write "Width = " & w
response.write "<br>Height = " & h
End If



Código PHP:
'------------------------------------------------------------


  '
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  
':::                                                             :::
  '
:::  This routine will attempt to identify any filespec passed  :::
  
':::  as a graphic file (regardless of the extension). This will :::
  '
:::  work with GIF or JPG files.                            :::
  
':::                                                             :::
  '
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  
':::          Based on ideas presented by David Crowell          :::
  '
:::                   (credit where due)                        :::
  
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  '
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  '
::: blah blah blah blah blah blah blah blah blah blah blah blah :::
  
'::: blah blah blah blah blah blah blah blah blah blah blah blah :::
  '
::: blah blah     Copyright *c* MM,  Mike Shaffer     blah blah :::
  
'::: blah blah      ALL RIGHTS RESERVED WORLDWIDE      blah blah :::
  '
::: blah blah  Permission is granted to use this code blah blah :::
  
'::: blah blah   in your projects, as long as this     blah blah :::
  '
::: blah blah      copyright notice is included       blah blah :::
  
'::: blah blah blah blah blah blah blah blah blah blah blah blah :::
  '
::: blah blah blah blah blah blah blah blah blah blah blah blah :::
  
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  '
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  
':::                                                             :::
  '
:::  This function gets a specified number of bytes from any    :::
  
':::  file, starting at the offset (base 1)                      :::
  '
:::                                                             :::
  
':::  Passed:                                                    :::
  '
:::       sFileName        => Filespec of file to read          :::
  
':::       offset      => Offset at which to start reading       :::
  '
:::       bytes       => How many bytes to read                 :::
  
':::                                                             :::
  '
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  function 
GetBytes(sFileName, offset, bytes)

     
Dim objFSO
     Dim objFTemp
     Dim objTextStream
     Dim lngSize

     on error resume next

     Set objFSO 
= CreateObject("Scripting.FileSystemObject")
     
     
' First, we get the filesize
     Set objFTemp = objFSO.GetFile(sFileName)
     lngSize = objFTemp.Size
     set objFTemp = nothing

     fsoForReading = 1
     Set objTextStream = objFSO.OpenTextFile(sFileName, fsoForReading)

     if offset > 0 then
        strBuff = objTextStream.Read(offset - 1)
     end if

     if bytes = -1 then        ' 
Get All!

        
GetBytes = objTextStream.Read(lngSize)  'ReadAll

     else

        GetBytes = objTextStream.Read(bytes)

     end if
    
     objTextStream.Close
     set objTextStream = nothing
     set objFSO = nothing

  end function


  '
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  
':::                                                             :::
  '
:::  Functions to convert two bytes to a numeric value (long)   :::
  
':::  (both little-endian and big-endian)                        :::
  '
:::                                                             :::
  
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  function lngConvert(strTemp)
     lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))
  end function

  function lngConvert2(strTemp)
     lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))
  end function

  
  '
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  
':::                                                             :::
  '
:::  This function does most of the real work. It will attempt  :::
  
':::  to read any file, regardless of the extension, and will    :::
  '
:::  identify if it is a graphical image.                       :::
  
':::                                                             :::
  '
:::  Passed:                                                    :::
  
':::       sFileName        => Filespec of file to read          :::
  '
:::       width       => width of image                         :::
  
':::       height      => height of image                        :::
  '
:::                                                             :::
  
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  function gfxSpex(sFileName, width, height)
      '
get the width and height of the passed file
      
'can only be a GIF or JPG

     dim strGIF
     dim strType
     strType = ""
     strImageType = "(unknown)"

     gfxSpex = False
     
     strGIF = "GIF"

     strType = GetBytes(sFileName, 0, 3)

     if strType = strGIF then                ' 
is GIF

        strImageType 
= "GIF"
        
Width = lngConvert(GetBytes(sFileName, 7, 2))
        
Height = lngConvert(GetBytes(sFileName, 9, 2))
        
gfxSpex = True

     
else

        
strBuff = GetBytes(sFileName, 0, -1)         Get all bytes from file
        lngSize 
= len(strBuff)
        
flgFound = 0

        strTarget 
= chr(255) & chr(216) & chr(255)
        
flgFound = instr(strBuff, strTarget)

        if 
flgFound = 0 then
           
exit function
        
end if

        
strImageType = "JPG"
        
lngPos = flgFound + 2
        ExitLoop 
= false

        
do while ExitLoop = False and lngPos < lngSize

           
do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize
              lngPos 
= lngPos + 1
           loop

           
if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
              lngMarkerSize 
= lngConvert2(mid(strBuff, lngPos + 1, 2))
              
lngPos = lngPos + lngMarkerSize  + 1
           
else
              
ExitLoop = True
           end 
if

       
loop

       
if ExitLoop = False then

          Width 
= -1
          Height 
= -1

       
else

          
Height = lngConvert2(mid(strBuff, lngPos + 4, 2))
          
Width = lngConvert2(mid(strBuff, lngPos + 6, 2))
          
gfxSpex = True

       end 
if
                   
     
end if

  
end function 

Un Saludo
__________________
Manual de ASP Avanzado ;-)