powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как *.Jpg записать в Blob-поле через TStream
7 сообщений из 7, страница 1 из 1
Как *.Jpg записать в Blob-поле через TStream
    #32254656
Maverick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь сделать так:

Ms:=TFileStream.Create(OpenPictureDialog1.FileName,fmOpen Read);
try
TBlobField(FieldByName('Kartinka')).LoadFromStream(ms);
finally
Ms.Free;
end;

Выдает "Bitmap image is not valid". Может кто знает как реализовать или сделать загрузку *.jpg ?
...
Рейтинг: 0 / 0
Как *.Jpg записать в Blob-поле через TStream
    #32255112
oleg_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с этим полем связан TDBImage?
...
Рейтинг: 0 / 0
Как *.Jpg записать в Blob-поле через TStream
    #32255157
Stupindo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помню у меня была такая трабла.
Насколько я помню там надо вручную подключить в юзес файлец, содержащий графические форматы именно для джипега (как именно он называется не помню. посмотри по аналогии с битмапом и т.п.). Автоматически этот файлец не подключается и прожка пробует распознать твою картинку как битмап.
...
Рейтинг: 0 / 0
Как *.Jpg записать в Blob-поле через TStream
    #32255266
Дмитрий Мыльников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. тут: \r
/topic/38656
...
Рейтинг: 0 / 0
Как *.Jpg записать в Blob-поле через TStream
    #32255764
Maverick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Дмитрий Мыльников

Подскажите, как вывести *.jpg в Image:

делаю так:

try
with DataModule1.Table1 do
begin
Insert;
BLOB:= TBlobStream.Create(TBlobField(FieldByName('Kartinka')),bmWrite);
FieldByName('Bilet').AsInteger := StrToInt(Edit1.Text);
FieldByName('Vopros').AsInteger := StrToInt(Edit2.Text);
FieldByName('Otvet').AsInteger := StrToInt(Edit3.Text);
Post;

jpg.LoadFromStream(blob);
Image2.Picture.Graphic := jpg;

end;
finally
jpg.Free;
blob.Free;
end;

Выдает ошибку "Jpg error #42" !
Где я чего не учел или напортачил?
...
Рейтинг: 0 / 0
Как *.Jpg записать в Blob-поле через TStream
    #32255862
Арнис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно тем-же мучился. Нижеприведённый код у меня работает.

procedure TfrmFoto.btnAddFotoClick(Sender: TObject);
var
s: TStream;
JpegImage:TJpegImage;
Bitmap:TBitmap;
begin
JpegImage:=TJPEGImage.Create;
Bitmap:=TBitmap.Create;
try
Bitmap.Assign(Image1.Bitmap);
JpegImage.Assign(Bitmap);
s := IBDataSet1.CreateBlobStream(IBDataSet1.FieldByName('bitmap'), bmWrite);
JpegImage.SaveToStream(s);
finally
Bitmap.Free; JpegImage.Free;
end;
IBDataSet1.Post;
s.Free;
end;
...
Рейтинг: 0 / 0
Как *.Jpg записать в Blob-поле через TStream
    #32256066
Дмитрий Мыльников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В примере, приведённом Maverick, я не увидел собственно записи данных картинки в BLOB. Должно быть что-то типа

Код:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
try
with DataModule1.Table1 do begin
   Insert;
    BLOB:= TBlobStream.Create(TBlobField(FieldByName('Kartinka')),bmWrite);

    jpg.SaveToStream(blob); //записываем данные из JPEG

    FieldByName('Bilet').AsInteger := StrToInt(Edit1.Text);
    FieldByName('Vopros').AsInteger := StrToInt(Edit2.Text);
    FieldByName('Otvet').AsInteger := StrToInt(Edit3.Text);
    Post; //здесь завершается создание записи
  finally blob.free; end;

  try
    BLOB:= TBlobStream.Create(TBlobField(FieldByName('Kartinka')),bmRead);
    jpg.LoadFromStream(blob); //читаем картинку из BLOB
    Image2.Picture.Graphic := jpg;
  finally
    blob.Free;
  end; 
end;



Внимтельнее разберитесь с состояниями Table и что когда пишем, а когда читаем. При этом BLOB, естественно, создаются разные, особенно если применяем флаги bmWrite или bmRead, поскольку первый указывает, что мы будем писать в BLOB, а второй, что только читать.

А ошибка, которая у вас появлялась означает, что Jpg не смог при считывании найти сигнатуру 42, с которой начинаются все JPEG файлы.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как *.Jpg записать в Blob-поле через TStream
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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