sprawdzanie, czy plik jest obrazem

sprawdzanie, czy plik jest obrazem
  • Rejestracja: dni
  • Ostatnio: dni
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.

RudyBestyj
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 103
0

Wczytujesz obraz do strumienia

Dodajesz:

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

odczytujesz nagłówek

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

A potem np.

Kopiuj
    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>
tomkiewicz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1193
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

  • Rejestracja: dni
  • Ostatnio: dni
0

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

RudyBestyj
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 103
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

Napisałem:

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

gdzie s to ścieżka do pliku

i wywala błąd:

Kopiuj
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.
RudyBestyj
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 103
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 :-)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.