sprawdzanie, czy plik jest obrazem

0

jak sprawdzić, czy otwarty plik jest grafiką i jakie ma rozszerzenie. Wiem, że można odczytać rozszerzenie pliku, ale czasami obraz jest w jpg ale nie ma rozszerzenia.

0

Wczytujesz obraz do strumienia

Dodajesz:

const
  BMBheader =   $4D42;
  JPEGheader =  $D8FF;
  GIFheader =   $4947;
  WMFheader =   $CDD7;
  EMFheader =   $0001;
  
 var
  Header: Word;

odczytujesz nagłówek

  
  Stream.ReadBuffer(Header,SizeOf(header)); 

A potem np.

    case Header  of
      BMBheader : ShowMessage('Plik formatu BMP');
      JPEGheader: ShowMessage('Plik formatu JPEG');
      GIFheader : ShowMessage('Plik formatu GIF');
      WMFheader : ShowMessage('Plik formatu WMF');
      EMFheader : ShowMessage('Plik formatu EMF');
      else raise Exception.Create('Inny format');
    end;
</delphi>
0

mozesz odczytac naglowek pliku - obejrzyj sobie hexedytorem jakiś jpeg (tylko uważaj, bo zdjęcia z exif mają trochę inny nagłówek).

ale rozszerzenia - jeżeli nie masz - nie wyczarujesz :D

edit: o, zostałem wyprzedzony

0

co to jest stream?? jak go zadeklarować??

0

klasa tStream
może korzystać z TFileStream , albo Z TMemoryStream i polecam F1 ;-)

0

Napisałem:

stream.Create(s,header);
Stream.ReadBuffer(Header,SizeOf(header));

gdzie s to ścieżka do pliku

i wywala błąd:

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 0040354A in module 'Project1.exe'. Read of address 8BD88B4F'. Process stopped. Use Step or Run to continue.
0

var
ms : TMemoryStream;

...

ms := TMemoryStream.Create;

ms.LoadFromFile('C:\Jakisobraz.xxx');

Oj kiepsko kolego :| , polecam poczytać kompendium Programowanie obiektowe :-/
Świetna książka i do tego On-Line :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1