Saber tamaño de imagen

467 views
Skip to first unread message

Luis Mata

unread,
Aug 23, 2013, 10:13:17 AM8/23/13
to vfp
Buenos días
 
Como puedo saber el tamaño de una imagen.
 
Luis Mata

Ricardo Pina

unread,
Aug 23, 2013, 10:38:20 AM8/23/13
to Grupo VFP
Hola Luis
 
Este enlace te puede servir para sacar lo que necesitas.
 
 
Saludos
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Edgar Acevedo

unread,
Aug 23, 2013, 12:54:30 PM8/23/13
to publice...@googlegroups.com
No recuerdo bien si fue en PortalFox o directamente del Maestro Cesar Chalom, pero por allí me bajé esta función:

* Obtener la resolución de un archivo gráfico
* Devuelve ancho por alto

FUNCTION Resol_Gra
   PARAMETERS M.GraFile
   M.Resol_Gra = ""
   IF TYPE("M.GraFile") = "C" AND FILE(M.GraFile) AND UPPER(JUSTEXT(M.GraFile)) $ "BMP,JPG,PNG,GIF"
      loShell = Createobject("Shell.Application")
      loFolder = loShell.Namespace(JUSTPATH(M.GraFile))
      loItem = loFolder.ParseName(JUSTFNAME(M.GraFile))
      If NOT Isnull(loItem)
         IF loItem.IsLink = .F.
            DO CASE
               CASE "XP" $ UPPER(GET_OS())
                  M.Resol_Gra = ALLTRIM(loFolder.GetDetailsOf(loItem, 26))
               CASE "7" $ UPPER(GET_OS())
                  M.Resol_Gra = STRTRAN(ALLTRIM(loFolder.GetDetailsOf(loItem, 31)), "?", "")
            ENDCASE
         ENDIF
      ENDIF
      RELEASE loShell, loFolder, loItem
   ENDIF
RETURN M.Resol_Gra



Tal vez sea lo que buscas.  Salu2,


Edgar Acevedo.


Luis Mata

unread,
Aug 23, 2013, 1:03:43 PM8/23/13
to publice...@googlegroups.com
Falta la funcion GET_OS()

Edgar Acevedo

unread,
Aug 23, 2013, 1:06:09 PM8/23/13
to publice...@googlegroups.com
Mil disculpas, aqui va la función Get_Os()  [que te devuelve la versión de Windows que estas usando]:

FUNCTION Get_OS
   lcOS = OS(1)
   DO CASE
      CASE "6.01" $ lcOS AND OS(11) = "1"
         lcPlatform = "WIN7"
      CASE "6.01" $ lcOS
         lcPlatform = "WIN2008R2"
      CASE "6.00" $ lcOS AND OS(11) = "1"
         lcPlatform = "VISTA"
      CASE "6.00" $ lcOS
         lcPlatform = "WIN2008"
      CASE "5.02" $ lcOS
         lcPlatform = "WIN2003"
      CASE "5.01" $ lcOS
         lcPlatform = "WINXP"
      CASE "5.0" $ lcOS
         lcPlatform = "WIN2000"
      CASE "NT" $ lcOS
         lcPlatform = "WINNT"
      CASE "4.0" $ lcOS OR "3.9" $ lcOS
         lcPlatform = "WIN95"
      CASE "4.1" $ lcOS
         lcPlatform = "WIN98"
      CASE "4.9" $ lcOS
         lcPlatform = "WINME"
      CASE "3." $ lcOS
         lcPlatform = "WIN31"
      OTHERWISE
         lcPlatform = "(Unknown)"
   ENDCASE

   DECLARE LONG GetModuleHandle IN WIN32API STRING lpModuleName
   DECLARE LONG GetProcAddress IN WIN32API LONG hModule, STRING lpProcName
   llIsWow64ProcessExists = (GetProcAddress(GetModuleHandle("kernel32"),"IsWow64Process") <> 0)
   llIs64BitOS = .F.
   IF llIsWow64ProcessExists
      DECLARE LONG GetCurrentProcess IN WIN32API
      DECLARE LONG IsWow64Process IN WIN32API LONG hProcess, LONG @ Wow64Process
      lnIsWow64Process = 0
      * IsWow64Process function return value is nonzero if it succeeds
      * The second output parameter value will be nonzero if VFP application is running under 64-bit OS
      IF IsWow64Process( GetCurrentProcess(), @lnIsWow64Process) <> 0
         llIs64BitOS = (lnIsWow64Process <> 0)
      ENDIF
   ENDIF
   lcPlatform = lcPlatform + " " + IIF(llIs64BitOS,"(64-bit)","(32-bit)")

RETURN lcPlatform



Luis Mata

unread,
Aug 23, 2013, 1:36:37 PM8/23/13
to publice...@googlegroups.com
Gracias, después de hacer algunas pruebas y cambios logre sacarlo en Windows 2012
 
=Resol_Gra(GETPICT())
FUNCTION Resol_Gra
   PARAMETERS M.GraFile
   M.Resol_Gra = ""
   IF TYPE("M.GraFile") = "C" AND FILE(M.GraFile) AND UPPER(JUSTEXT(M.GraFile)) $ "BMP,JPG,PNG,GIF"
      loShell = Createobject("Shell.Application")
      loFolder = loShell.Namespace(JUSTPATH(M.GraFile))
      loItem = loFolder.ParseName(JUSTFNAME(M.GraFile))
      If NOT Isnull(loItem)
         IF loItem.IsLink = .F.
            DO CASE
               CASE "XP" $ UPPER(GET_OS())
                  M.Resol_Gra = ALLTRIM(loFolder.GetDetailsOf(loItem, 26))
               CASE "7" $ UPPER(GET_OS())
                  M.Resol_Gra = STRTRAN(ALLTRIM(loFolder.GetDetailsOf(loItem, 31)), "?", "")
               CASE "12" $ UPPER(GET_OS())
                  M.Resol_Gra = STRTRAN(ALLTRIM(loFolder.GetDetailsOf(loItem, 31)), "?", "")
            ENDCASE
         ENDIF
      ENDIF
      RELEASE loShell, loFolder, loItem
   ENDIF
   ?'hi'
   ?M.Resol_Gra
RETURN M.Resol_Gra
 
FUNCTION Get_OS
   lcOS = OS(1)
   DO CASE
         CASE "6.02" $ lcOS AND OS(11) = "3"
         lcPlatform = "WINDOWS2012"
    ?lcPlatform
RETURN lcPlatform
 
Sent: Friday, August 23, 2013 12:06 PM
Subject: Re: [vfp] Saber tamaño de imagen
 

Edgar Acevedo

unread,
Aug 23, 2013, 1:43:55 PM8/23/13
to publice...@googlegroups.com
Cierto, cambia según la versión de Windows. Gracias por compartir.






2013/8/23 Luis Mata <lm...@cclf.com.pe>

Luis Maria Guayan

unread,
Aug 23, 2013, 4:53:19 PM8/23/13
to publice...@googlegroups.com
-- Tamaño de una imagen --
http://www.portalfox.com/article.php?sid=360

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Luis Mata

unread,
Aug 23, 2013, 5:08:01 PM8/23/13
to publice...@googlegroups.com
Buen truco, gracias.
 
Sent: Friday, August 23, 2013 3:53 PM
Subject: Re: [vfp] Saber tamaño de imagen
 

ZeRoberto

unread,
Aug 23, 2013, 6:00:08 PM8/23/13
to publice...@googlegroups.com
Yo tengo una funcion que saca las dimensiones directamente del archivo
excepto para TIFF

El 23/08/13, Luis Mata <lm...@cclf.com.pe> escribió:
--
btnMyVideo.Click() <http://www.youtube.com/watch?v=E7pwDaahxTQ>
Reply all
Reply to author
Forward
0 new messages