Delphi определение типа изображения в TImageControl - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь определить тип изображения, загруженный в TImageControl FMX. Я использую Delphi 10.3 Rio.

Мой код выглядит следующим образом:

function DetectImage(BM: TBitmap): string;
var
  MS: TMemoryStream;
  FirstBytes: AnsiString;
begin
  MS := TMemoryStream.Create;
  try
    BM.SaveToStream(MS);
    SetLength(FirstBytes, 8);
    MS.Read(FirstBytes[1], 8);
    if Copy(FirstBytes, 1, 2) = 'BM' then
    begin
      Result := 'bmp';
    end
    else if FirstBytes = #137'PNG'#13#10#26#10 then
    begin
      Result := 'png';
    end
    else if Copy(FirstBytes, 1, 3) = 'GIF' then
    begin
      Result := 'gif';
    end
    else if Copy(FirstBytes, 1, 2) = #$FF#$D8 then
    begin
      Result := 'jpg';
    end
    else
      Result := '?';

  finally
    MS.Free;
  end;
end;

procedure TfrmMain.imgTeamAChange(Sender: TObject);
begin
 ShowMessage(DetectImage(imgTeamA.Bitmap))  ;
end;

Итак, когда я нажимаю TImageControl, чтобы изменить его, я всегда получаю '?' в результате.

Как мне заставить это работать?

1 Ответ

0 голосов
/ 11 июля 2020

О, я не знал, что TImageControl имеет событие OnLoaded с аргументом const FileName: string, это прекрасно! Лучше не бывает!

...