- Код: Выделить всё
- procedure TForm1.ReadDPI();
 var
 Buffer: ^Byte;
 Stream: TFileStream;
 Size: LongInt;
 begin
 Stream := TFileStream.Create(UTF8ToSys(OpenPictureDialog1.FileName), fmOpenRead);
 try
 Size := Stream.Size;
 GetMem(Buffer, Size);
 try
 Stream.ReadBuffer(Buffer[0], Size);
 ... // Здесь проверка заголовка графического файла.
 Image1.Picture.LoadFrom...(Buffer); // Как это можно сделать?
 finally
 FreeMem(Buffer);
 end;
 finally
 Stream.Free;
 end;
 end;
Можно было бы после проверки заголовка загрузить файл с диска:
- Код: Выделить всё
- ...
 ReadDPI();
 Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
 ...
Но не хотелось бы дважды обращаться к диску.
Далее. Перед сохранении графического файла на диске необходимо "в рукопашную" откорректировать его заголовок, т.е. из Image выгрузить графический файл сначала в буфер, а после коррекции заголовка перенести его на диск.




