Buenas:
Trabajando con Win32, tengo una imagen en un buffer rgb (o mejor dicho BGR).
Ese buffer esta correcto, lo pinto pixel a pixel y se ve perfecto. Lo paso a un raw y lo habro con photoshop y perfecto tambien.
Ahora, cuando lo visualizo con stretchdibits aparece con unas muestras erroneas de colores pintado en diagonal como si estuviera la anchura un pixel mas grande.
el codigo que uso es simple.
BITMAPINFO dib;
HDC dc;
BYTE * data;
int w=img->GetWidth();
int h=img->GetHeight();
//img->Draw(GetDC(hWnd),0,0,w*mul,h*mul);
dc=GetDC(hWnd);
data=img->GetData();
memset(&dib,0,sizeof(dib));
dib.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
dib.bmiHeader.biHeight = -h; //Alto
dib.bmiHeader.biWidth = w; //Largo
dib.bmiHeader.biPlanes = 1;
dib.bmiHeader.biBitCount = 3*8;
dib.bmiHeader.biClrUsed = 0;
dib.bmiHeader.biClrImportant = 0;
dib.bmiHeader.biXPelsPerMeter =0;
dib.bmiHeader.biYPelsPerMeter =0;
dib.bmiHeader.biCompression = BI_RGB;
dib.bmiHeader.biSizeImage =0;
if (StretchDIBits(dc,0,0,w,h, 0, 0, w,h, data,&dib, DIB_RGB_COLORS, SRCCOPY)!=h)
{
//...error
}
este codigo solo falla con ciertos tamaños de imagen. Sin embargo la imagen esta perfecta y los valores de w y h estan correctos, a que puede deberse el error? es un bug de la api?
gracias
la imagen sale asi:
no me pasa con todas solo con algunas, pero la descompresion es correcta.
supongo que tendra que ver con las proporciones o algun dato que no estoy usando bien