W jaki sposób rozpoznać typ pliku graficznego (tylko formaty bmp, jpg, gif(statyczny) oraz png) ale nie po rozszerzeniu?
Sytuacja ma się tak:
mamy plik a.bmp i chce sprawdzić czy jego zawartością jest faktycznie bmp czy może png, gif, jpg.
bool is_jpeg_file(istream &is)
{
unsigned short soi;
unsigned short app0;
char sign[5];
if(!is.read((char*)&soi,2) || soi != 0xD8FF)return false;
is .read((char*)&app0,2)
.seekg(2,ios::cur)
.read(sign,5);
return (is && app0 == 0xE0FF && strcmp(sign,"JFIF") == 0);
}
bool is_png_file(istream &is)
{
unsigned char sign;
char tmp[4];
unsigned int size;
if(!is.read((char*)&sign,1) || sign != 0x89)return false;
if(!is.read(tmp,3) || strncmp(tmp,"PNG",3))return false;
is.seekg(4,ios::cur);
while(is.read((char*)&size,4).read(tmp,4))
{
char* p = (char*)&size;
swap(p[0],p[3]);
swap(p[1],p[2]);
is.seekg(size,ios::cur).seekg(4,ios::cur);
if(strncmp(tmp,"IEND",4) == 0)return true;
}
return false;
}
Bo czasem warto, żeby pytający się wysilił, wszak to jego problem, nie mój.
String typ = Image1->Picture->Graphic->GetNamePath();
To czego Ty tu szukasz. Zajmij się własnymi problemami i nie przejmuj się nami maluczkimi.
Mało praktyczne te Twoje rozwiązania, gdyż do każdego rodzaju pliku trzeba tworzyć odrębną funkcję.
To już lepiej posłużyć się klasą TGraphic i z niej odczytywać tym pliku
Powrót do Aplikacje multimedialne, graficzne
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości