• Jueves 14 de Noviembre de 2024, 07:49

Autor Tema:  Re: Reducir tamaño de fotos  (Leído 3128 veces)

ROBER.29

  • Miembro MUY activo
  • ***
  • Mensajes: 421
    • Ver Perfil
    • http://www.contrapixel.com
Re: Reducir tamaño de fotos
« en: Miércoles 3 de Septiembre de 2003, 10:37 »
0
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.
Roberto García
Moderador de Visual Basic.
Gerente
[contra]PixeL S.L.
Valladolid

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Reducir tamaño de fotos
« Respuesta #1 en: Miércoles 3 de Septiembre de 2003, 14:04 »
0
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.

ROBER.29

  • Miembro MUY activo
  • ***
  • Mensajes: 421
    • Ver Perfil
    • http://www.contrapixel.com
Reducir tamaño de fotos
« Respuesta #2 en: Miércoles 3 de Septiembre de 2003, 16:38 »
0
Muchas gracias por tu respuesta. Intentare de esta forma conseguir lo que quiero, ya te informare la semana que viene de mis progresos.

Saludos.
Roberto García
Moderador de Visual Basic.
Gerente
[contra]PixeL S.L.
Valladolid