C #: hacer los primeros 8 bytes copiados por copyPixels contienen una cabecera?

StackOverflow https://stackoverflow.com/questions/4298509

  •  29-09-2019
  •  | 
  •  

Pregunta

Estoy utilizando el método en un copyPixels BitmapImage (C #) y desea obtener los datos de píxeles primas. Sin embargo, cuando examino el tampón en bruto en un depurador, veo que los primeros 8 bytes son siempre (Hex)

67174944 00300000

aquí está el fragmento de código:

int stride = frm.PixelWidth * frm.Format.BitsPerPixel / 8;
stride = (stride % 4) == 0 ? stride : (stride + 4);
rawPixels = new byte[stride * frm.PixelHeight * frm.Format.BitsPerPixel / 8];
frm.CopyPixels(rawPixels, stride, 0);

No se puede encontrar ningún documento que diga lo que podría ser esta cabecera. Es interesante que el texto equivalente de 6717 es "DI", lo que me hizo pensar que esto tiene algo que ver con un encabezado DIB, pero estoy bastante seguro de que estoy equivocado. gracias.

¿Fue útil?

Solución

Se busca en el encabezado de tabla de objeto. Añadir 8 a la dirección para encontrar los elementos de la matriz.

Otros consejos

No tengo ni idea de lo que está mal en los primeros 8 bytes, pero algunas otras observaciones:

El cálculo de la zancada parece extraño para mí. ¿Qué pasa con

stride = ((stride+3)/4)*4;

A continuación, supongo que el tamaño de la memoria intermedia rawPixels-debería leer

rawPixels = new byte[stride * frm.PixelHeight]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top