powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Загрузка картинки из файла в TGraphic
10 сообщений из 10, страница 1 из 1
Загрузка картинки из файла в TGraphic
    #40048724
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В TPicture есть такой замечательный код
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure TPicture.LoadFromFile(const Filename: string);
var
  Ext: string;
  GraphicClass: TGraphicClass;
  Context: TFindGraphicClassContext;
begin
  Ext := ExtractFileExt(Filename).Remove(0, 1);
  GraphicClass := FileFormats.FindExt(Ext);
  ......

Хотел повторить это у себя в коде, но оказалось, что FileFormats объявлена в секции implementation и добраться до него нельзя. Есть какой-то обходной путь? Или грузить файл в TPicture, а потом уже у него брать Graphic?


С уважением, Vasilisk
...
Рейтинг: 0 / 0
Загрузка картинки из файла в TGraphic
    #40048725
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.02.2021 17:15, _Vasilisk_ пишет:
> FileFormats объявлена в секции implementation и добраться до него нельзя.

дык, сделай себе дубликат, да и хер с ней.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка картинки из файла в TGraphic
    #40048726
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Или грузить файл в TPicture, а потом уже у него брать Graphic?

Да. Можно даже и не брать, а сразу работать с TPicture.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка картинки из файла в TGraphic
    #40048727
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
дык, сделай себе дубликат, да и хер с ней.
А заполнять мне ее кто будет?
Dimitry Sibiryakov
Можно даже и не брать, а сразу работать с TPicture.
Не. Мне на выходе нужен принципиально TPngImage, потому то что загрузилось еще буду конвертировать
...
Рейтинг: 0 / 0
Загрузка картинки из файла в TGraphic
    #40048728
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.02.2021 17:21, _Vasilisk_ пишет:
> А заполнять мне ее кто будет?

2 строчки кода.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Загрузка картинки из файла в TGraphic
    #40048729
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
2 строчки кода.
По всем зарегистрировным типам TGraphic?
...
Рейтинг: 0 / 0
Загрузка картинки из файла в TGraphic
    #40048739
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Я вообще на расширение не ориентируюсь, смотрю на содержимое. А там - из блоба оно пришло, или из файла - это уже уровень выше.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
function LoadPictureFromStream( Stream: TStream ): TGraphic;
var
  aHeader: Array[ 0 .. 9 ] of AnsiChar;
begin
  Result := nil;

  try
    if Stream.Size < sizeof( aHeader ) then
      Exit;

    Stream.Position := 0;
    Stream.Read( aHeader, sizeof( aHeader ) );

    if ( aHeader[ 0 ] = 'B' ) and ( aHeader[ 1 ] = 'M' ) then begin
      Stream.Position := 0;
      Result := Graphics.TBitmap.Create;
      Result.Transparent := True;
      Result.LoadFromStream( Stream );
    end else if ( aHeader[ 1 ] = 'P' ) and ( aHeader[ 2 ] = 'N' ) and ( aHeader[ 3 ] = 'G' ) then begin
      Stream.Position := 0;
      Result := TPNGObject.Create;
      Result.Transparent := True;
      Result.LoadFromStream( Stream );
    end else if ( aHeader[ 0 ] = 'G' ) and ( aHeader[ 1 ] = 'I' ) and ( aHeader[ 2 ] = 'F' ) then begin
      Stream.Position := 0;
      Result := TGIFImage.Create;
      Result.LoadFromStream( Stream );
    end else if ( aHeader[ 6 ] = 'J' ) and ( aHeader[ 7 ] = 'F' ) and ( aHeader[ 8 ] = 'I' ) and ( aHeader[ 9 ] = 'F' ) then begin
      Stream.Position := 0;
      Result := TJPEGImage.Create;
      Result.LoadFromStream( Stream );
    end else
      Exit;
  except
    FreeAndNil( Result );
  end;
end;
...
Рейтинг: 0 / 0
Загрузка картинки из файла в TGraphic
    #40048775
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TPicture.RegisterFileFormat ?
...
Рейтинг: 0 / 0
Загрузка картинки из файла в TGraphic
    #40048947
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev
TPicture.RegisterFileFormat ?
Правильно. Который все складывает в приватный FileFormats. С чего и родился исходный вопрос
...
Рейтинг: 0 / 0
Загрузка картинки из файла в TGraphic
    #40048954
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Или грузить файл в TPicture, а потом уже у него брать Graphic?
А почему нет, жалко несколько лишних байт в памяти разместить?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Загрузка картинки из файла в TGraphic
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]