• Miércoles 20 de Noviembre de 2024, 10:17

Autor Tema:  Volcado De Imagen Rgb A Pantalla Win32  (Leído 1300 veces)

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Volcado De Imagen Rgb A Pantalla Win32
« en: Miércoles 29 de Agosto de 2007, 10:22 »
0
Buenas:

Tengo una imagen descompresa en formato RGB en un array de datos.
Querria hacer que aparezca en pantalla, a ser posible con stretch.

He probado con StretchDIBits y SetDIBitsToDevice y no he conseguido que se vea, sin embargo los datos de la imagen estan bien, ya que punto a punto se visualiza correctamente.

Código: Text
  1.  
  2.   BITMAPINFO bmi;
  3.     memset(&bmi, 0, sizeof(bmi));
  4.     bmi.bmiHeader.biSize        = sizeof(BITMAPINFOHEADER);
  5.     bmi.bmiHeader.biWidth       = jpeg.width;
  6.     bmi.bmiHeader.biHeight      = jpeg.height;
  7.     bmi.bmiHeader.biPlanes      = 1;
  8.     bmi.bmiHeader.biBitCount    = 0;
  9.     bmi.bmiHeader.biCompression = BI_RGB;
  10.   bmi.bmiHeader.biSizeImage   = 0;
  11.  
  12.     int iRet = StretchDIBits(dc,
  13.                          0, 0, jpeg.width, jpeg.height,
  14.                          0, 0, jpeg.width, jpeg.height,
  15.        jpeg.data,
  16.                          &bmi,
  17.                          DIB_RGB_COLORS,
  18.                          SRCCOPY);
  19.  
  20.  

Estoy haciendo algo mal? por que esta sacado de msdn y no se si estoy llenando la estructura correctamente o que

daltomi

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Volcado De Imagen Rgb A Pantalla Win32
« Respuesta #1 en: Jueves 30 de Agosto de 2007, 22:06 »
0
Hola.
biSizeImage no deberia ser 0. Una fórmula que yo utilizo es:
tamaño = ((bits + 7)/8) * ancho * alto;
Recomiendo que busques una mejor, por que me a dado problemas para mapas de 24 bits.
biBitCount no debe ser 0. Debes especificar el valor que corresponda a la imagen: 8, 16 o 24 bits. En cambio biCompression debe ser 0(generalmente).

¿Qué tipo de datos es jpg.data,es un puntero a void?

De todas maneras, te recomiendo este sitio: www.codeproject.com/bitmap/

Saludos.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Volcado De Imagen Rgb A Pantalla Win32
« Respuesta #2 en: Lunes 10 de Septiembre de 2007, 17:03 »
0
muchas gracias, ya he podido arreglarlo.  :lol:

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Volcado De Imagen Rgb A Pantalla Win32
« Respuesta #3 en: Lunes 10 de Septiembre de 2007, 17:18 »
0
Cita de: "daltomi"
tamaño = ((bits + 7)/8) * ancho * alto;
Recomiendo que busques una mejor, por que me a dado problemas para mapas de 24 bits.
Hola,

Los problemas seguramente son por que el tamaño en bytes de las filas esta alineado a 32 bits:

Asi que quedaria mejor:

biSizeImage = (biBitCount * biWidth + 31) / 32 * biHeight;