Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Загрузка картинки из файла в TGraphic / 10 сообщений из 10, страница 1 из 1
25.02.2021, 17:15
    #40048724
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка картинки из файла в TGraphic
В 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
25.02.2021, 17:18
    #40048725
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка картинки из файла в TGraphic
25.02.2021 17:15, _Vasilisk_ пишет:
> FileFormats объявлена в секции implementation и добраться до него нельзя.

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

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

2 строчки кода.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.02.2021, 17:32
    #40048729
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка картинки из файла в TGraphic
Мимопроходящий
2 строчки кода.
По всем зарегистрировным типам TGraphic?
...
Рейтинг: 0 / 0
25.02.2021, 18:22
    #40048739
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка картинки из файла в TGraphic
_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
25.02.2021, 20:45
    #40048775
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка картинки из файла в TGraphic
TPicture.RegisterFileFormat ?
...
Рейтинг: 0 / 0
26.02.2021, 13:53
    #40048947
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка картинки из файла в TGraphic
Dmitry Arefiev
TPicture.RegisterFileFormat ?
Правильно. Который все складывает в приватный FileFormats. С чего и родился исходный вопрос
...
Рейтинг: 0 / 0
26.02.2021, 14:02
    #40048954
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка картинки из файла в TGraphic
_Vasilisk_
Или грузить файл в TPicture, а потом уже у него брать Graphic?
А почему нет, жалко несколько лишних байт в памяти разместить?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Загрузка картинки из файла в TGraphic / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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