Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Enero 05, 2014, 08:01:20 pm

Título: Conocer dimensiones de imagenes png, wmf, emf
Publicado por: Bazooka 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
Título: Re:Conocer dimensiones de imagenes png, wmf, emf
Publicado por: Jeronimo en Enero 06, 2014, 12:42:34 am
¿Y si los cargás en el ucImage de Cobein?
Título: Re:Conocer dimensiones de imagenes png, wmf, emf
Publicado por: Bazooka 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
Título: Re:Conocer dimensiones de imagenes png, wmf, emf
Publicado por: LeandroA 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
Título: Re:Conocer dimensiones de imagenes png, wmf, emf
Publicado por: Bazooka en Enero 07, 2014, 10:34:47 am
GENIAL!!! LEANDRO!!

MUCHAS GRACIAS