se podria convertir una imagen jpg en bmp desde vbasic (solucionado)

Iniciado por pedraosone, 24 Julio 2009, 23:20 PM

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

pedraosone

Hola, una vez mas me dirijo a la comunidad a ver si pueden ayudarmecon una duda que tengo
me gustaria que la aplicacion que ando creando pueda ser capaz de tomar una imagen .jpg y transformarla en una imagen .bmp
si alguien me indicara como podria hacerlo lo agradeceria pero agradeceria mas algun codigo de ejemplo.
muchas gracias a todos.

XcryptOR

si claro que se puede hacer, en el momento solo te puedo ayudar con este code pero el problema es que depemde de una dll externa "VIC32", igual aqui te dejo el codigo, y la libreria.

Código (vb) [Seleccionar]
Declare Function jpeginfo Lib "VIC32.DLL" (ByVal Fname As String, jdat As JpegData) As Long
Declare Function allocimage Lib "VIC32.DLL" (image As imgdes, ByVal wid As Long, ByVal leng As Long, ByVal BPPixel As Long) As Long
Declare Function loadjpg Lib "VIC32.DLL" (ByVal Fname As String, desimg As imgdes) As Long
Declare Sub freeimage Lib "VIC32.DLL" (image As imgdes)
Declare Function savebmp Lib "VIC32.DLL" (ByVal Fname As String, srcimg As imgdes, ByVal compression As Long) As Long

' Image descriptor
Type imgdes
   ibuff As Long
   stx As Long
   sty As Long
   endx As Long
   endy As Long
   buffwidth As Long
   palette As Long
   colors As Long
   imgtype As Long
   bmh As Long
   hBitmap As Long
End Type

Type JpegData
    ftype As Long
    width As Long
    length As Long
    comps As Long
    precision As Long
    sampfac0 As Long
    sampfac1 As Long
    sampfac2 As Long
    sampfac3 As Long
    vbitcount As Long
End Type


Public Sub Main()


Dim tmpimage As imgdes
   Dim rcode As Long
   Dim jdat As JpegData     ' Reserve space for JPEG file info
   Dim bmp_fname As String
   Dim jpg_fname As String

   bmp_fname = "pathmyfilebmp.bmp"
   jpg_fname = "pathmyfile.jpg"

   ' Get info on the file we're to load
   rcode = jpeginfo(jpg_fname, jdat)
   If (rcode <> NO_ERROR) Then
      MsgBox "Cannot find file", 0, "Error encountered!"
      Exit Sub
   End If
   
   ' Allocate space for an image
   rcode = allocimage(tmpimage, jdat.width, jdat.length, jdat.vbitcount)
   If (rcode <> NO_ERROR) Then
     MsgBox "Not enough memory", 0, "Error encountered!"
     Exit Sub
   End If
   
   ' Load image
   rcode = loadjpg(jpg_fname, tmpimage)
   If (rcode <> NO_ERROR) Then
      freeimage tmpimage ' Free image on error
      MsgBox "Cannot load file", 0, "Error encountered!"
      Exit Sub
   End If

   ' Save image
   rcode = savebmp(bmp_fname, tmpimage, 0)
   freeimage tmpimage
End Sub


Descargar DLL



pianista

Si no quieres usar dll, siempre puedes mirar como funcionan las cabeceras de jpg y bmp, e intentar programarla tu en algun lenguaje de programación...
Recuerdo que una vez hice en C algo que fusionaba dos jpg, no es algo muy complicado, lo único buscar el formato jpg y ver para que sirve cada byte

Saludos

pedraosone

muchas gracias por tan pronta ayuda amigo. me surge la siguiente duda, esa libreria la nesesitaria mi aplicacion para poder funcionar o solo la nesesitare para compilar el programa
nuevamente muchas gracias

XcryptOR

en vb si usas librerias como estas siempre seras dependiente de ellas, como dice el post anterior es mejor a puro vb pero requiere de tiempo, igualmente si la necesitas en tu aplicacion compilada puedes agregarla como recurso luego la extraes y la registras y ya.

saludos espero te haya sido de ayuda



pedraosone

Cita de: pianista en 25 Julio 2009, 00:35 AM
Si no quieres usar dll, siempre puedes mirar como funcionan las cabeceras de jpg y bmp, e intentar programarla tu en algun lenguaje de programación...
Recuerdo que una vez hice en C algo que fusionaba dos jpg, no es algo muy complicado, lo único buscar el formato jpg y ver para que sirve cada byte

Saludos

muchas gracias pero apenas comienzo con el vbasic y hay muchas cosas que no entiendo aun
como eso de averiguar para que sirve cada byte pero gracias de todos modos.

pedraosone

Cita de: XcryptOR en 25 Julio 2009, 00:42 AM
en vb si usas librerias como estas siempre seras dependiente de ellas, como dice el post anterior es mejor a puro vb pero requiere de tiempo, igualmente si la necesitas en tu aplicacion compilada puedes agregarla como recurso luego la extraes y la registras y ya.

saludos espero te haya sido de ayuda
muchas gracias amigo al menos ya tengo material para ir probando y ver que tal funciona
gracias nuevamente a todos
doy el post por solucionado


pedraosone

Cita de: XcryptOR en 25 Julio 2009, 00:47 AM
mira esto tambien te puede servir

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId=7270

muchas gracias xcryptor lo probare tambien a vere si logro solucionar lo que tengo en mente
nuevamente muchas gracias a todos

seba123neo

Cita de: pedraosone en 25 Julio 2009, 00:51 AM
Cita de: XcryptOR en 25 Julio 2009, 00:47 AM
mira esto tambien te puede servir

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId=7270

muchas gracias xcryptor lo probare tambien a vere si logro solucionar lo que tengo en mente
nuevamente muchas gracias a todos


pedraosone busca un poco en internet, busque 10 segundos y encontre un modulo de Leandro que lo hace y mas codigos por ahi...BUSCA

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson