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
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 :-)