Hola Jesus.
Cita:
Empezado por jesusgandia1966
Esta función no obtiene la información de si la imagen es de 32, 24, 16 o 8 bits.
El valor obtenido no corresponde con lo mencionado en el post.
Pueden comprobarlo ustedes mismos.
Deje en un post mas arriba lo que quiero y lo que quiero es consultar un fichero JPG directamente en el archivo y comprobar si es de 32 bits, 24, 16 o 8 bits.
Tal como cuando hace Windows con las propiedades del fichero, que si es de IMAGEN muestra dichos valores de forma muy directa.
|
No había leido este mensaje.
Te comento que en mis pruebas, la información que muestra la función traducida, se corresponde con la obtenida en el explorador de windows en las propiedades del archivo.
De todos modos se me ocurrió que también podrías probar de este modo:
Código PHP:
TPixelFormat getColorbit(const char* &fileName) {
TPixelFormat pf;
Graphics::TBitmap *bmp = new Graphics::TBitmap;
TJPEGImage *jpg = new TJPEGImage;
jpg->LoadFromFile(fileName);
bmp->Assign(jpg);
pf = bmp->PixelFormat;
delete jpg;
delete bmp;
return pf;
}
Ej. de llamada:
Código PHP:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
switch (getColorbit(OpenDialog1->FileName.c_str())) {
case pfDevice: ShowMessage("Device-dependant bitmap");break;
case pf1bit : ShowMessage("One bit per pixel");break;
case pf4bit : ShowMessage("Uses a 16-color palette");break;
case pf8bit : ShowMessage("Uses a 256color palette"); break;
case pf15bit : ShowMessage("uses 15 bits per pixel (RGB compression)"); break;
case pf16bit : ShowMessage("uses 16 bits per pixel (bitfield compression)"); break;
case pf24bit : ShowMessage("uses 24 bits per pixel"); break;
case pf32bit : ShowMessage("uses 32 bits per pixel (RGB compression)"); break;
case pfCustom: ShowMessage("TBitmap does not support pfCustom"); break;
}
}
Saludos
