La Web del Programador: Comunidad de Programadores
 
    Pregunta:  55 - GUARDAR UNA IMAGEN EN VISUAL BASIC
Autor:  Rafael
Hola, me llamo Rafael, y estoy haciendo un programa en Visual Basic. Tengo un problema y no sé como resolverlo.
Yo capturo imágenes a través de una digitalizadora (video HighWay), y captura una fotografía en formato PAL, ahora yo necesito convertir esa imagen a 200x280 pixel. para ello posiciono la foto pal en un frame y oculto la parte sobrante. Hasta aquí consigo visualizar la foto en mi formato, pero no soy capaz de grabar la parte de la foto visualizada en un fichero BMP.
Gracias, estaría muy agradecido si me pudieran resolver este problema.

  Respuesta:  hormiga
podes hacerlo a traves de la API BitBlt que te copia la imagen con las coordenadas que vos les des (p. ej. tenes un picture con una foto de 64x64 y vos queres los primeros 50, entonces les pasas los parametros y listo)
Si tenes alguna duda escribime al correo.
Saludos

  Respuesta:  Yavir Robles
Hola, lo que haces al guardar la imagen de un objeto es tomar y salvar todo su contenido, es decir si tu tienes una imágen que no cabe en un Picture Box por sus dimensiónes, cuando la salves no se guardará lo que ves de ella sino toda porque es el contenido del control.

Lo que puedes hacer es usar la función BitBlt que te guarda àreas de la pantalla, viene documentada en el MSDN, de cualquier forma si tienes alguna duda me escribres.

  Respuesta:  Roberto Morales
Puedes guardar una imagen BMP de la siguiente manera:
creas dos ciclos for anidados y utilizas la función Point(x,y) de visual basic para obtener
el color de cada pixel, Este tipo de solución puede sonar un poco rústica, pero tal vez te pueda servir, por medio de visual basic abres un archivo bmp que hayas creado previamente con el paint, y colocas los primeros 1047 bytes de este archivo en el archivo destino, el formato de los archivos bmp si es en blanco y negro:
Cuando el archivo bmp es en blanco y negro el Paint guarda el archivo leyendo pixel por pixel desde arriba hasta abajo, cada que lee 8 pixeles
crea un byte, este byte es negado por ejemplo, suponiendo que la siguiente es una imagen bmp en blanco y negro y que cada asterizco representa un pixel


*
***
*****
*******

la forma de guardar esto en un archivo bmp es copiar la parte de configuración del archivo que generalmente se encuentra entre los 1000 y 1047 primeros bytes del archivo bmp esta parte contiene información escencial que el paint utiliza para saber el tipo de imagen que se abre o se guarda, todos los bytes restantes del archivo son los colores de los pixeles del dibujo(como ya sabras un dibujo esta hecho solo por colores de pixeles)

para la imagen anterior quedaria asi
11110111 =247d representado en ASCII ´¸´
11100011 =227d representado en ASCCI ´Ò´
11000001 =193d representado en ASCCI ´-´
10000000 =128d representado en ASCCI ´Ç´
de esta manera y como puedes ver el archivo es
muy compacto, ya que para 32 pixeles el archivo solamente ocupó 4 bytes esto es por ser un archvo en blanco y negro, y como lo puedes tu mismo comprobar un archivo B&W es siempre mas compacto que uno a color.

En el caso de un archivo a color

  Respuesta:  Jorge Serrano
Si deseas guardar una imagen Bmp, suponiendo que la imagen capturada la ves en un control Picture, el código para salvar la imagen en formato Bmp es muy simple:
Save Picture Picture1.Picture, "C:\Imagen.Bmp"
Espero que te funcione correctamente, sino, mira la ayuda de SavePicture.

  Respuesta:  Miguel Angel
Bueno no se si te sirva, pero el comando BitBlt del GDI32 puede desplegar y capturar imagenes en la pantalla, desafortunadamente es una funcion externa de Vb y como tal esta poca documentada, la declaracion de la funcion es:
Declare Function BitBlt Lib "GDI32" (ByVal hDestDC 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 dwRop As Long) As Long
Puedes ver el ejemplo "calldlls" que viene con el Vb, para mas detalles.
Espero que te sirva y suerte.
Mi pagina web: http://mike79.home.ml.org