SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: ROBER.29 en Miércoles 3 de Septiembre de 2003, 10:37
-
Hola compañeros,
Yo tengo una aplicación que tiene una opción para subir imágenes a una base de datos. De momento ya sube las imágenes que el usuario ha seleccionado el problema se me ha presentado cuando he introducido una opción nueva a la hora de subir las fotos que es que el usuario puede indicar el ancho y alto de la foto con la que kiere que se suban las fotos. Es decir el usuario por ejemplo selecciona de una carpeta 4 fotos que tienen un tamaño de 500 x 500 y luego a la hora de subir pone que kiere que se suban con el tamaño 300 x 300, yo lo que tengo que hacer antes de subir cada imagen a la base de datos es reducirlas al tamaño indicado por el usuario. ¿Como se puede reducir el tamaño de una imagen con visual basic?
Gracias por vuestra ayuda.
Saludos.
-
Para reducir el tamaño de una imagen puedes utilizar el api 'StretchBlt'.
Imagina un formulario con dos PictureBox: Picture1 con la imagen origen y Picture2 en donde dibujaremos la copia reducida. Ahora copiaríamos por ejemplo a una imagen de 60x60 (en pixels ojo)
'A nivel de módulo.
Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
'Por ejemplo al cargar el form
Private Sub Form_Load
Dim lngRc As Long
lngRc = StretchBlt(Picture2.hdc, 0, 0, 60, 60, Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, &HCC0020)
End Sub
A ver si con esto te vas arreglando... de todas formas no considero completa mi respuesta, ya que lo que hace esta api es copiar (SRCCOPY = &HCC0020) el mapa de bits a un DC según el tamaño y coordenadas que le especifiques. Ahora la cuestión es guardar el mapa de bits. Supongo que abrá que crear un DC compatible o un mapa de bits, o algo así y aplicarle 'Strechblt', ya que si intentas utilizar 'SavePicture' con Picture2, te llevarás una desagradable sorpresa.
En fin...espero que esto te sirva de ayuda. Suerte.
-
Muchas gracias por tu respuesta. Intentare de esta forma conseguir lo que quiero, ya te informare la semana que viene de mis progresos.
Saludos.