Autor Tema: Conocer dimensiones de imagenes png, wmf, emf  (Leído 2856 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Conocer dimensiones de imagenes png, wmf, emf
« en: Enero 05, 2014, 08:01:20 pm »
Hola amigos necesito obtener las dimensiones de diversos tipos de imagenes pero no se como hacer en formatos como el png, wmf o emf que no son soportados por el control imagen.
Por que los jpg, bmp etc los cargo en un imagen con autosize = true y listo !
Hay alguna forma de conocerlo leyendo los atributos del archivo ??

Gracias
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Conocer dimensiones de imagenes png, wmf, emf
« Respuesta #1 en: Enero 06, 2014, 12:42:34 am »
¿Y si los cargás en el ucImage de Cobein?

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Conocer dimensiones de imagenes png, wmf, emf
« Respuesta #2 en: Enero 06, 2014, 07:46:57 am »
¿Y si los cargás en el ucImage de Cobein?

Estuve probando y el ucimage no muestra las imagens wmf y emf que son las que mas me interesa manejar. Pero curiosamente no se porque motivo crei que el control imagen de windows no las aceptaba pero SÍ lo hace!! asi que lo resuelvo de esa manera.
Gracias
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Conocer dimensiones de imagenes png, wmf, emf
« Respuesta #3 en: Enero 07, 2014, 12:19:58 am »
Hola usando GDI+ creo que seria lo mas comodo, seguramente hay otras formas sin nececidad de cargar la imagen, pero bueno ya requiere un poco el estudio de las cabezeras de cada formato.

Código: (vb) [Seleccionar]
Option Explicit

Private Declare Function GdipDisposeImage Lib "gdiplus" (ByVal Image As Long) As Long
Private Declare Function GdipLoadImageFromFile Lib "gdiplus" (ByVal FileName As Long, ByRef Image As Long) As Long
Private Declare Function GdiplusStartup Lib "gdiplus" (ByRef Token As Long, ByRef lpInput As GDIPlusStartupInput, Optional ByRef lpOutput As Any) As Long
Private Declare Function GdiplusShutdown Lib "gdiplus" (ByVal Token As Long) As Long
Private Declare Function GdipGetImageWidth Lib "GdiPlus.dll" (ByVal mImage As Long, ByRef mWidth As Long) As Long
Private Declare Function GdipGetImageHeight Lib "GdiPlus.dll" (ByVal mImage As Long, ByRef mHeight As Long) As Long

 
Private Type GDIPlusStartupInput
    GdiPlusVersion                      As Long
    DebugEventCallback                  As Long
    SuppressBackgroundThread            As Long
    SuppressExternalCodecs              As Long
End Type
 



Public Function GetImageSize(ByVal FileName As String, ByRef Width As Long, ByRef Height As Long) As Boolean
    Dim hImg As Long
    Dim GdipToken As Long
    Dim GdipStartupInput As GDIPlusStartupInput
   
   
    GdipStartupInput.GdiPlusVersion = 1&
   
    If GdiplusStartup(GdipToken, GdipStartupInput, ByVal 0&) = 0 Then
        If GdipLoadImageFromFile(StrPtr(FileName), hImg) = 0 Then
            GdipGetImageWidth hImg, Width
            GdipGetImageHeight hImg, Height
            GetImageSize = True
            Call GdipDisposeImage(hImg)
        End If
       
        Call GdiplusShutdown(GdipToken)
    End If
   
End Function

Código: (vb) [Seleccionar]
Private Sub Form_Load()
    Dim W As Long, H As Long
   
    GetImageSize "C:\Users\Windows\Desktop\Logo.emf", W, H
   
    Debug.Print W, H
End Sub
« última modificación: Enero 07, 2014, 12:28:13 am por LeandroA »

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Conocer dimensiones de imagenes png, wmf, emf
« Respuesta #4 en: Enero 07, 2014, 10:34:47 am »
GENIAL!!! LEANDRO!!

MUCHAS GRACIAS
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.