Discussion:
Modificar el tamaño de una imagen
(demasiado antiguo para responder)
Jordi Jofre Juanhuix
2007-10-31 15:32:28 UTC
Permalink
Como puede modificar el tamaño de una imagen en visual basic?

Con el savepicture puedo grabar una imagen que se muestra en un picture,
inocente de mi pensaba que con un image y un stretch ya estaba
pero no me lo graba en su tamaño original como es logico.

Despues lo he intentado con la API strechblt, y si que consigo que me canvia
el tamaño en el picture pero si le digo guardar me da un error,
supongo porque hay valores del picture que no estan incialitzados o algo
así.

Resumiendo, alguien me puede dar una idea de hacia donde ir o sabe de un
ejemplo que lo explique.

gracias
Rubén Vigón
2007-10-31 15:49:35 UTC
Permalink
Hola Jordi,

Cuando tengo que hacer algo con imágenes uso la magnífica librería «GBitmap» del maestro Pedro Maicas (con esta librería me pasa como con las MZ-Tools de Carlos J.Quintero: una vez que empiezas a usarlas, ya no puedes vivir sin ellas)

GBitmap (DLL-ActiveX)
Librería que exporta un objeto ActiveX para manejo de gráficos. Usando los métodos de este objeto se pueden leer y grabar ficheros en formato bmp, gif y jpg, crear un bitmap en cualquier formato compatible bmp, capturar un bitmap, pintarlo en una ventana, manipular la paleta y los pixels, etc
http://www.maicas.net/dn/gbitmap.zip

En tu caso, sólo tienes que usar el método «Resize». Por ejemplo, para abrir un archivo "grande" de tipo *.BMP, reducir su tamaño a 320x240 pixels y guardarlo como *.JPG:

Dim g As GBITMAPLib.GBitmap
Set g = New GBITMAPLib.GBitmap
g.LoadFileBmp "c:\carpeta\archivo_grande.bmp"
g.Resize 320, 240
g.SaveFileJpg "c:\carpeta\archivo_pequeño.jpg"
Set g = Nothing

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Harvey Triana
2007-10-31 15:53:52 UTC
Permalink
' ejemplo
Picture1.AutoRedraw = True
Picture1.PaintPicture LoadPicture("C:\imagen.jpg"), 0, 0, _
Picture1.ScaleWidth, Picture1.ScaleHeight, , , , ,
vbSrcCopy
SavePicture Picture1.Image, "C:\imagen2.jpg"

Quizás solo te faltaba AutoRedraw.

<Harvey Triana />
Post by Jordi Jofre Juanhuix
Como puede modificar el tamaño de una imagen en visual basic?
Con el savepicture puedo grabar una imagen que se muestra en un picture,
inocente de mi pensaba que con un image y un stretch ya estaba
pero no me lo graba en su tamaño original como es logico.
Despues lo he intentado con la API strechblt, y si que consigo que me
canvia el tamaño en el picture pero si le digo guardar me da un error,
supongo porque hay valores del picture que no estan incialitzados o algo
así.
Resumiendo, alguien me puede dar una idea de hacia donde ir o sabe de un
ejemplo que lo explique.
gracias
Jordi Jofre Juanhuix
2007-11-02 10:13:52 UTC
Permalink
A ti te funciona?

Private Sub Command2_Click()
SavePicture Picture1.Image, "Prova12.bmp"
End Sub

picture1.PaintPicture LoadPicture(ruta), 0, 0, Picture1.ScaleWidth,
Picture1.ScaleHeight

Esto me muestra la imagen con las medidas deseadas,

Pero si haces

SavePicture Picture1.Image, "Prova12.bmp"

La imagen que crea, es el fondo del picture no la imagen en sí, no?
Post by Harvey Triana
' ejemplo
Picture1.AutoRedraw = True
Picture1.PaintPicture LoadPicture("C:\imagen.jpg"), 0, 0, _
Picture1.ScaleWidth, Picture1.ScaleHeight, , , , ,
vbSrcCopy
SavePicture Picture1.Image, "C:\imagen2.jpg"
Quizás solo te faltaba AutoRedraw.
<Harvey Triana />
Post by Jordi Jofre Juanhuix
Como puede modificar el tamaño de una imagen en visual basic?
Con el savepicture puedo grabar una imagen que se muestra en un picture,
inocente de mi pensaba que con un image y un stretch ya estaba
pero no me lo graba en su tamaño original como es logico.
Despues lo he intentado con la API strechblt, y si que consigo que me
canvia el tamaño en el picture pero si le digo guardar me da un error,
supongo porque hay valores del picture que no estan incialitzados o algo
así.
Resumiendo, alguien me puede dar una idea de hacia donde ir o sabe de un
ejemplo que lo explique.
gracias
Harvey Triana
2007-11-02 13:13:17 UTC
Permalink
¿Usaste Autoredraw? ¿?
Post by Jordi Jofre Juanhuix
A ti te funciona?
Private Sub Command2_Click()
SavePicture Picture1.Image, "Prova12.bmp"
End Sub
picture1.PaintPicture LoadPicture(ruta), 0, 0, Picture1.ScaleWidth,
Picture1.ScaleHeight
Esto me muestra la imagen con las medidas deseadas,
Pero si haces
SavePicture Picture1.Image, "Prova12.bmp"
La imagen que crea, es el fondo del picture no la imagen en sí, no?
Post by Harvey Triana
' ejemplo
Picture1.AutoRedraw = True
Picture1.PaintPicture LoadPicture("C:\imagen.jpg"), 0, 0, _
Picture1.ScaleWidth, Picture1.ScaleHeight, , , , ,
vbSrcCopy
SavePicture Picture1.Image, "C:\imagen2.jpg"
Quizás solo te faltaba AutoRedraw.
<Harvey Triana />
Post by Jordi Jofre Juanhuix
Como puede modificar el tamaño de una imagen en visual basic?
Con el savepicture puedo grabar una imagen que se muestra en un picture,
inocente de mi pensaba que con un image y un stretch ya estaba
pero no me lo graba en su tamaño original como es logico.
Despues lo he intentado con la API strechblt, y si que consigo que me
canvia el tamaño en el picture pero si le digo guardar me da un error,
supongo porque hay valores del picture que no estan incialitzados o algo
así.
Resumiendo, alguien me puede dar una idea de hacia donde ir o sabe de un
ejemplo que lo explique.
gracias
Jordi Jofre Juanhuix
2007-11-02 15:38:14 UTC
Permalink
Gracias, a veces soy un poco duro

:-)
Post by Harvey Triana
¿Usaste Autoredraw? ¿?
Post by Jordi Jofre Juanhuix
A ti te funciona?
Private Sub Command2_Click()
SavePicture Picture1.Image, "Prova12.bmp"
End Sub
picture1.PaintPicture LoadPicture(ruta), 0, 0, Picture1.ScaleWidth,
Picture1.ScaleHeight
Esto me muestra la imagen con las medidas deseadas,
Pero si haces
SavePicture Picture1.Image, "Prova12.bmp"
La imagen que crea, es el fondo del picture no la imagen en sí, no?
Post by Harvey Triana
' ejemplo
Picture1.AutoRedraw = True
Picture1.PaintPicture LoadPicture("C:\imagen.jpg"), 0, 0, _
Picture1.ScaleWidth, Picture1.ScaleHeight, , , , ,
vbSrcCopy
SavePicture Picture1.Image, "C:\imagen2.jpg"
Quizás solo te faltaba AutoRedraw.
<Harvey Triana />
Post by Jordi Jofre Juanhuix
Como puede modificar el tamaño de una imagen en visual basic?
Con el savepicture puedo grabar una imagen que se muestra en un
picture, inocente de mi pensaba que con un image y un stretch ya estaba
pero no me lo graba en su tamaño original como es logico.
Despues lo he intentado con la API strechblt, y si que consigo que me
canvia el tamaño en el picture pero si le digo guardar me da un error,
supongo porque hay valores del picture que no estan incialitzados o
algo así.
Resumiendo, alguien me puede dar una idea de hacia donde ir o sabe de
un ejemplo que lo explique.
gracias
Paco Mangas
2007-11-05 14:09:01 UTC
Permalink
Hola a todos, yo también estoy interesado en poder reducir imágenes,
fundamentalmente para poder enviar fotos a mis familiares sin que "pesen"
tanto; normalmente lo hago con el Paint pero tengo que hacerlo una a una, y
se me ocurrió hacer un programita que cogiera todas las fotos de una carpeta
y las fuera copiando reduciéndolas de tamaño, pero no consigo que me
funcione bien.

A ver si alguno de los maestros me puede echar una mano.

Probé con la librería Gbitmap de Pedro Maicas que nos recomendaba Rubén
Vigón, reduce el tamaño perfectamente pero me deja los colores hechos un
desastre. No sé si es algo de la profundidad de color o de qué.

Probé con el sistema de Harvey Triana también reduce las dimensiones en
pixels perfectamente y la calidad de la imagen queda bien, pero el tamaño
del archivo resultante es muy grande, de hecho si reduzco ancho y alto a la
tercera parte el resultado ocupa más que el original.

En fin...que soy muy bruto.

Muchas gracias a los mencionados y cualquier otro que me quiera ayudar.

Un saludo.

Paco Mangas
Lluis Franco
2007-11-05 14:57:04 UTC
Permalink
:-)
Hola Paco,

¿Te vale en .NET?
Si es así te lo mando o lo publico...

Un saludo,
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
--
Web: http://sps.uyssoft.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
--
(Guía de netiquette de los foros)
http://sps.uyssoft.com/Foros%20online/Netiquette.aspx
FIMARGE, S.A.
Principat d'Andorra
***@ODIO_EL_SPAMfimarge.ad
Tel.: +376 805 100
Fax: +376 824 500
--
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile/Lluis
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho.
Paco Mangas
2007-11-05 16:29:02 UTC
Permalink
Hola Lluis, muchas gracias por tu ofrecimiento, pero tengo VB6.

A ver si aparece otra alma caritativa ;-)

Un saludo.

Paco Mangas
Morgan
2007-11-05 23:36:35 UTC
Permalink
Veo que no es un requerimiento que FORZOSAMENTE tengas que resolver mediante
VB, te recomendaría la dll de pedro maicas pero creo que ya la viste, bueno,
y si usas las "Microsoft PowerToys for Windows XP"



http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx

entre las cuales tienes..

Image Resizer
This PowerToy enables you to resize one or many image files with a
right-click.

Otra opción es usar el "Microsoft Office Picture Manager" con el también
podrás seleccionar una o mas imágenes par reducir con porcentaje, tamaño,
etc.
--
Saludos ... Morgan 8-)
DGPPTB ... Cancún, Quintana Roo, México
This posting is provided "AS IS" with no warranties, and confers no rights.
Post by Paco Mangas
Hola Lluis, muchas gracias por tu ofrecimiento, pero tengo VB6.
A ver si aparece otra alma caritativa ;-)
Un saludo.
Paco Mangas
Alejandro Hernández Cavanillas
2007-11-05 22:17:13 UTC
Permalink
Paco

Revisa este programa:
http://www.digitaldutch.com/arles/

Es de pago.. 40 y tantos dolares
Bastante bueno para hacer lo que quieres. No tiene nada que ver con VB6,
pero sirve, entre otras cosas para ajustar el tamaño de las imagenes de un
directorio al que tu desees.

Saludos

Alejandro
Post by Paco Mangas
Hola a todos, yo también estoy interesado en poder reducir imágenes,
fundamentalmente para poder enviar fotos a mis familiares sin que "pesen"
tanto; normalmente lo hago con el Paint pero tengo que hacerlo una a una,
y se me ocurrió hacer un programita que cogiera todas las fotos de una
carpeta y las fuera copiando reduciéndolas de tamaño, pero no consigo que
me funcione bien.
A ver si alguno de los maestros me puede echar una mano.
Probé con la librería Gbitmap de Pedro Maicas que nos recomendaba Rubén
Vigón, reduce el tamaño perfectamente pero me deja los colores hechos un
desastre. No sé si es algo de la profundidad de color o de qué.
Probé con el sistema de Harvey Triana también reduce las dimensiones en
pixels perfectamente y la calidad de la imagen queda bien, pero el tamaño
del archivo resultante es muy grande, de hecho si reduzco ancho y alto a
la tercera parte el resultado ocupa más que el original.
En fin...que soy muy bruto.
Muchas gracias a los mencionados y cualquier otro que me quiera ayudar.
Un saludo.
Paco Mangas
Jordi Jofre Juanhuix
2007-11-07 11:56:18 UTC
Permalink
A ver,

Si juntamos lo que yo quería hacer con la dll dijpg.dll, me parece que lo
tienes solucionado.

http://www.telecable.es/personales/jrubi/index.htm?trucos/tip00279.htm

Solo tienes que cargar las imagenes con el paintpicture, en un picture de la
medida que quieres que sean las imagenes.
Despues hacer un savepicture, te generará una imagen bmp, demasiado grande
pero con la dll que comento lo puedes
pasar a jpg. Yo utilizo y me parece que funciona bien.

Saludos

No olvides el AutoRedraw ;-)
Post by Alejandro Hernández Cavanillas
Paco
http://www.digitaldutch.com/arles/
Es de pago.. 40 y tantos dolares
Bastante bueno para hacer lo que quieres. No tiene nada que ver con VB6,
pero sirve, entre otras cosas para ajustar el tamaño de las imagenes de un
directorio al que tu desees.
Saludos
Alejandro
Post by Paco Mangas
Hola a todos, yo también estoy interesado en poder reducir imágenes,
fundamentalmente para poder enviar fotos a mis familiares sin que "pesen"
tanto; normalmente lo hago con el Paint pero tengo que hacerlo una a una,
y se me ocurrió hacer un programita que cogiera todas las fotos de una
carpeta y las fuera copiando reduciéndolas de tamaño, pero no consigo que
me funcione bien.
A ver si alguno de los maestros me puede echar una mano.
Probé con la librería Gbitmap de Pedro Maicas que nos recomendaba Rubén
Vigón, reduce el tamaño perfectamente pero me deja los colores hechos un
desastre. No sé si es algo de la profundidad de color o de qué.
Probé con el sistema de Harvey Triana también reduce las dimensiones en
pixels perfectamente y la calidad de la imagen queda bien, pero el tamaño
del archivo resultante es muy grande, de hecho si reduzco ancho y alto a
la tercera parte el resultado ocupa más que el original.
En fin...que soy muy bruto.
Muchas gracias a los mencionados y cualquier otro que me quiera ayudar.
Un saludo.
Paco Mangas
Jairo Hernandez
2007-11-07 16:47:01 UTC
Permalink
hola Jordi.. será mucho pedirte si me puede enviar esa dll a mi correo.
jairos@@@gmx.net solo con una @

muy agradecido..






s
Post by Jordi Jofre Juanhuix
A ver,
Si juntamos lo que yo quería hacer con la dll dijpg.dll, me parece que lo
tienes solucionado.
http://www.telecable.es/personales/jrubi/index.htm?trucos/tip00279.htm
Solo tienes que cargar las imagenes con el paintpicture, en un picture de
la medida que quieres que sean las imagenes.
Despues hacer un savepicture, te generará una imagen bmp, demasiado grande
pero con la dll que comento lo puedes
pasar a jpg. Yo utilizo y me parece que funciona bien.
Saludos
No olvides el AutoRedraw ;-)
Post by Alejandro Hernández Cavanillas
Paco
http://www.digitaldutch.com/arles/
Es de pago.. 40 y tantos dolares
Bastante bueno para hacer lo que quieres. No tiene nada que ver con VB6,
pero sirve, entre otras cosas para ajustar el tamaño de las imagenes de
un directorio al que tu desees.
Saludos
Alejandro
Post by Paco Mangas
Hola a todos, yo también estoy interesado en poder reducir imágenes,
fundamentalmente para poder enviar fotos a mis familiares sin que
"pesen" tanto; normalmente lo hago con el Paint pero tengo que hacerlo
una a una, y se me ocurrió hacer un programita que cogiera todas las
fotos de una carpeta y las fuera copiando reduciéndolas de tamaño, pero
no consigo que me funcione bien.
A ver si alguno de los maestros me puede echar una mano.
Probé con la librería Gbitmap de Pedro Maicas que nos recomendaba Rubén
Vigón, reduce el tamaño perfectamente pero me deja los colores hechos un
desastre. No sé si es algo de la profundidad de color o de qué.
Probé con el sistema de Harvey Triana también reduce las dimensiones en
pixels perfectamente y la calidad de la imagen queda bien, pero el
tamaño del archivo resultante es muy grande, de hecho si reduzco ancho y
alto a la tercera parte el resultado ocupa más que el original.
En fin...que soy muy bruto.
Muchas gracias a los mencionados y cualquier otro que me quiera ayudar.
Un saludo.
Paco Mangas
Paco Mangas
2007-11-08 09:01:52 UTC
Permalink
Muchas gracias a todos.

En cuanto pueda probar las nuevas soluciones que me sugerís os comento.

Un saludo.

Paco Mangas

Continúe leyendo en narkive:
Loading...