¿Cómo determinar si bmp (escala de grises) está en blanco según la proporción de blanco y negro?
LPBITMAPINFO bmi
LPBYTE pBits
En cuanto a cómo almacenarla en esta estructura, puede consultar el siguiente código (pero este código no es la clave para resolver su problema):
BOOL CBmp::Read(CString file name)
{
CFile file;
BITMAPFILEHEADER bmfh
//Abrir archivo
if (! file. open(nombre de archivo, CFile::modeRead))
{
AfxMessageBox("¡El archivo no se puede abrir!");
Devolver FALSE
}
//Leer encabezado del archivo
documento. read((LPVOID)&bmfh,sizeof(bmfh));
if(bmfh.bfType!= 0x4d42)
{
AfxMessageBox("Esto no es un bmp archivo ");
Devolver FALSO
}
Si (índice de masa corporal)
{
Eliminar bmi
bmi = NULL
}
if(pbit)
{
Eliminar pBits
pBits = NULL
}
//Leer encabezado y paleta del mapa de bits
int infoSize = bmfh bfoff bits- sizeof(bmfh). ;
bmi = (LPBITMAPINFO) nuevos bytes [infoSize];
Archivo. read((LPVOID)bmi, infoSize);
if (BMI- gt;bmiHeader.biBitCount!=1. ampBMI- gt;bmiHeader.biBitCount!=4
amp ampBMI- gt;bmiHeader.biBitCount! = 8 ampBMI- gt;bmiHeader.biBitCount! =24)
{
AfxMessageBox("¡Número de color no válido!");
Devolver FALSO
}
//Leer datos de la imagen
pBits = nuevos bytes [BMI- gt;encabezado BMI imagen]
Archivo.
Read((LPVOID)pBits,BMI-gt;BMI header . bisize image);
Devuelve TRUE
}
Tu pregunta se puede resolver de la siguiente manera Función check() para juzgar:
int GetBytesPerLine() constante
{
Devuelve BMI- gt;BMI encabezado imagen bisize/BMI- gt;BMI. encabezado BIH;
}
Comprobación booleana()
{
if(pBits[0]!=0 | | pBits[0]! =255)
Devuelve falso
int BytePosition
if(pBits[0] == 0)
for(int I = 0;i ltBMI- gt;encabezado BMI. Altura BIH; i )
{
for(int j = 0;j ltnew BMI- gt;encabezado IMC .bi width; j)
{
posición del byte = I * GetBytesPerLine() j;
if(pBits[BytePosition]!= 0 )
Devuelve falso
}
}
Otros
for(int I = 0; I ltIMC- gt; encabezado IMC . altura BIH; i )
{
for(int j = 0; j ltnew BMI- gt; encabezado BMI. bi ancho; j)
{
posición del byte = I * GetBytesPerLine() j;
if(pBits[BytePosition]!= 255)
Devuelve falso
}
}
Devuelve verdadero
}