Reduce de tamaño tus jpg con Visual Basic.
Herramientas, Visual Basic 15 julio 2008
Esta es una pequeña aplicación que utilizo para ponerla a disposición de los inexpertos que permite reducir considerablemente el tamaño de las imágenes jpg.

Los resultados son sorprendentes y todo gracias a la librería DIjpg.dll.
El código de visual basic es el siguiente:
-
Private Declare Function DIWriteJpg Lib "DIjpg.dll" (ByVal DestPath As String, ByVal quality As Long, ByVal progressive As Long) As Long
-
Dim nombreFichero As String
-
Dim convertido As Boolean
-
Dim OriginalSize As Long
-
Dim FinalSize As Long
-
Dim sOriginalSize As String
-
Dim sFinalSize As String
-
Private Sub cmdCargar_Click()
-
convertido = False
-
Image1.Picture = LoadPicture()
-
Image2.Picture = LoadPicture()
-
With dlgCommonDialog
-
.DialogTitle = "Seleccionar archivo para convertir"
-
.FileName = ""
-
.CancelError = False
-
.InitDir = App.Path
-
.Filter = "Archivos .jpg (*.jpg)|*.jpg"
-
.ShowOpen
-
If Len(.FileName) = 0 Then
-
Exit Sub
-
End If
-
Image1 = LoadPicture(.FileName)
-
nombreFichero = .FileName
-
End With
-
OriginalSize = FileLen(nombreFichero)
-
sOriginalSize = Mid(Str(OriginalSize), 1, Len(Str(OriginalSize)) - 3)
-
lblOriginalSize.Caption = sOriginalSize & " Kb"
-
End Sub
-
-
Private Sub cmdExit_Click()
-
End
-
End Sub
-
-
Private Sub cmdSave_Click()
-
Dim retval As Long
-
Dim loadStr As String
-
-
If convertido = True Then
-
MsgBox "El archivo ya ha sido convertido"
-
Exit Sub
-
End If
-
'OtraVez:
-
MousePointer = vbHourglass
-
'Initializa input path
-
loadStr = nombreFichero
-
-
'Requerido por DIjpg.dll
-
SavePicture Image1.Picture, "C:\tmp.bmp"
-
'Salvar a JPEG
-
On Error GoTo Error
-
retval = DIWriteJpg(loadStr, hshQual.Value, chkProg.Value)
-
-
If retval = 1 Then 'correcto
-
Image2.Picture = LoadPicture(loadStr)
-
Else 'ocurrió un error
-
MsgBox "La conversión NO fue exitosa. Intentelo de nuevo."
-
Exit Sub
-
End If
-
-
'Elimino el fichero temporal
-
Kill "C:\tmp.bmp"
-
MousePointer = vbNormal
-
convertido = True
-
FinalSize = FileLen(nombreFichero)
-
sFinalSize = Mid(Str(FinalSize), 1, Len(Str(FinalSize)) - 3)
-
lblFinalSize.Caption = sFinalSize & " Kb"
-
MsgBox "La conversion se ha realizado con éxito de " & sOriginalSize & " Kb a " & sFinalSize & " Kb. " _
-
& "El tamaño del fichero se ha reducido a un " & Round(FinalSize * 100 / OriginalSize, 2) & " %", , "Información de conversion"
-
Exit Sub
-
Error:
-
MsgBox Err.Description
-
MousePointer = vbNormal
-
End Sub
-
Private Sub Form_Load()
-
convertido = False
-
End Sub
-
Private Sub hshQual_Scroll()
-
txtQual.Text = Str(hshQual.Value)
-
End Sub

Descargas:
Ficheros fuentes
DIjpg.dll
freeSize.ocx
Si alguien está interesado en la instalación completa de la aplicación para windows que deje su huella en los comentarios y lo subiré.
Posts anterior y posterior:
Posts Relacionados:
- Previo: « Desbloquear pdf online gratis.
- Siguiente: Ordenador virtual siempre disponible gratis. »
noviembre 7th, 2008 a las 3:16 am
excelente gracias
noviembre 25th, 2008 a las 11:08 pm
Estoy interesada en el ejecutable para reducir fotos
noviembre 27th, 2008 a las 11:20 pm
En realidad el ejecutable está en los ficheros fuentes pero entiendo que lo que quieres es una instalación completa.
Te la he puesto aquí para que te la descargues.
marzo 5th, 2009 a las 2:29 pm
gracias por el aporte
julio 9th, 2009 a las 9:31 pm
Buenas, en realidad me ha sido muy util el código, pero ahora presento un problema, que para windows vista me da un error, si sabes en codigo como arreglar me seria muy util en mi programa, gracias de ante mano
julio 16th, 2009 a las 2:27 am
Funciona excelente, es justo lo que estaba buscando para un pequeño proyecto, esto me ayudará a reducir el peso de las imagenes antes de guardarlas en la base de datos.
Muchas gracias
julio 25th, 2009 a las 3:02 am
hola, por un casual no tendras algo que haga todo lo contrario, es decir:
tengo una imagen en jpg y lo que nesesito es convertirla en bmp
espero respuesta
gracias.
noviembre 9th, 2009 a las 5:07 pm
Hola David,
Como podría hacer lo mismo pero utilizando mi webcam....es decir, quiero tomar fotografías con mi webcam para que cada vez que haga click en un boton me saque una foto y me la guarde como jpg????....
Ayuda pleace!
Gracias
abril 14th, 2010 a las 8:11 pm
En el ejemplo falta un componente llamado Freezise.ocx
El ejemplo no anda.
abril 17th, 2010 a las 11:58 pm
Tienes razón Elifa, lo he añadido a las descargas.
Sorry.