powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Опять sex с Image
2 сообщений из 2, страница 1 из 1
Опять sex с Image
    #32226312
Арнис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, помогите!!!
В программе пишу:

s := IBQuery1.CreateBlobStream(IBQuery1.FieldByName('bitmap'), bmRead);
Image1.Picture.Graphic.LoadFromStream(s);
(т.е. пытаюсь загрузить картинку в Image)

Так вот в чём вопрос: Если до этого в Image небыло ничего загружено - выпадает ошибка при работе с памятью. Если при показе фомы в Image грузить картинку - тода вроде всё работает. Но возникает другой "гемор" - картинка грузится через раз :( т.е. выдаёт ошибку

Посоветуйте - как с этим разобраться.
...
Рейтинг: 0 / 0
Опять sex с Image
    #32226419
Дмитрий Мыльников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И правильно он тебя посылает. Изначально поле Image.Picture.Graphics неопределено (то есть, равно NUL). Соответственно, тип Graphics тоже не известен. Когда вы загружаете изображение из файла или Clipboard, то вызываете соответсвующий метод у Picture, который умеет определять тип файла и в зависимости от типа создаёт Graphics нужного типа. Естественно, что TBitmap, TMetafile, TJPEGImage, TIcon и т.д. являются потомками TGraphics.
Но вот метода LoadFromStream, который бы определял тип изображения, у Picture нет.
В приведённом Вами примере Вы дожны сначала создать нужный из потомков TGrapics, у которого и вызвать команду LoadFromStream.

Я уже пару раз давал пример для работы с BMP и JPEG, хранимых в BLOB, повторю лишь функцию загрузки изображения:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
procedure TForm1.DataSourceDataChange(Sender: TObject; Field: TField);
var BLOB:TBlobStream;
    Code:word;
begin
  if DataSource.State=dsBrowse then begin
    if assigned(Image.Picture.Graphic) then begin 
       Image.Picture.Graphic.Free; Image.Picture.Graphic:=NIL;
    end;
    BLOB:=TBlobStream.Create(TableImage,bmRead);
    try
      BLOB.Read(Code,SizeOf(Code)); BLOB.Seek( 0 , 0 );
      case Code of
       $4D42: begin
         Image.Picture.Graphic:=TBitmap.Create;
         Image.Picture.Graphic.LoadFromStream(BLOB);
       end;
       $D8FF: begin
         Image.Picture.Graphic:=TJPEGImage.Create;
         Image.Picture.Graphic.LoadFromStream(BLOB);
       end;
      end;
    finally BLOB.Free; end;
  end;
end;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Опять sex с Image
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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