Hola Jesus.
Código PHP:
bool getJpegsize(TMemoryStream *jpeg, int &width, int &height, int &bitDepth) {
int n;
unsigned char b;
unsigned int w;
bool result = false;
n = jpeg->Size;
jpeg->Position = 0;
if (n <= 0) return false;
jpeg->Read(&w, 2);
if ( w < 0xD8FF ) return false;
jpeg->Read(&b, 1);
while (jpeg->Position < n && b==0xFF) {
jpeg->Read(&b, 1);
switch(b) {
case 0xC0: case 0xC1: case 0xC2: case 0xC3: {
jpeg->Seek(3, soFromCurrent);
jpeg->Read(&w, 2);
height = (w&0xFF)<<8|(w&0xFF00)>>8;
jpeg->Read(&w, 2);
width = (w&0xFF)<<8|(w&0xFF00)>>8;
jpeg->Read(&b, 1);
bitDepth = b * 8;
return true;
}; break;
case 0xFF: jpeg->Read(&b, 1); break;
case 0xD0: case 0xD1: case 0xD2: case 0xD3: case 0xD4:
case 0xD5: case 0xD6: case 0xD7: case 0xD8: case 0xD9: {
jpeg->Seek(1, soFromCurrent);
jpeg->Read(&b, 1);
};
default: {
jpeg->Read(&w, 2);
jpeg->Seek(((w&0xFF)<<8|(w&0xFF00)>>8)-2, soFromCurrent);
jpeg->Read(&b,1);
}; break;
}
}
}
Ejemplo de uso:
Código PHP:
void __fastcall TForm1::Button1Click(TObject *Sender){
if (OpenDialog1->Execute()) {
TMemoryStream *ms = new TMemoryStream;
int w,h,d;
ms->LoadFromFile(OpenDialog1->FileName);
getJpegsize(ms, w, h, d);
delete ms;
ShowMessage("Width: "+IntToStr(w)+
"\nHeight: "+IntToStr(h)+
"\nDepth: "+IntToStr(d));
}
}
Saludos