powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / изображение в базу и из базы
22 сообщений из 47, страница 2 из 2
изображение в базу и из базы
    #39961942
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FIL23может кто предложит поизящней код

Какую букву из моего "используй TBlobStream" ты не заметил?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39961985
FIL23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

FIL23может кто предложит поизящней код

Какую букву из моего "используй TBlobStream" ты не заметил?

я не понимаю как нужно писать код для него.
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962004
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FIL23

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TForm1.Button2Click(Sender: TObject);
begin
perIBQuery:=my_initialization_TIBQuery_insert(perIBQuery); 
//perIBQuery.Active:=false; 
//perIBQuery.SQL.Clear;  
//perIBQuery.SQL.Add ('select * from INVENTORY_IMAGE where ID =8' );
perIBQuery.SQL.Text := 'select * from INVENTORY_IMAGE where ID =8';
//perIBQuery.Active:=true;
perIBQuery.Open;
perIBQuery.Last;
...


Image1.Picture.Graphic.LoadFromStream(Ss); // вы уверены что это прочитается из TStringStream

...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962016
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FIL23,

Вы записываете изображение как данные, а читаете, как строку. Это чревато багами. Должен быть одинаковый механизм как записи, так и чтения. Используете stream для записи, используйте его же для чтения.
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962035
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FIL23
Теперь извлечение данных, выгружаем данные из бд и определяем что это jpeg или bpm

Это определение лучше делать на этапе загрузки и выставлять тип содержимого, например, в отдельное поле.
Jpg, bmp или docx.
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962139
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FIL23я не понимаю как нужно писать код для него.

Используя методы, описанные в документации, например.
1. Создаёте TIBBlobStram.
2. Сохраняете в него изображение.
3. Присваиваете параметру полученный от него BlobId AsQuad.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962191
FIL23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

FIL23я не понимаю как нужно писать код для него.

Используя методы, описанные в документации, например.
1. Создаёте TIBBlobStram.
2. Сохраняете в него изображение.
3. Присваиваете параметру полученный от него BlobId AsQuad.


Уточню "я не понимаю как нужно писать код для него" от слова совсем. Потому что я не программист, а системный администратор. Тямы не хватает :(

Меня интересует инициализация TbloobStreeam
Вот есть пример который мне совсем не помогает.

Как мне создать поток и передать в него данные? (для моего случая, т.е. в поле IMAGE_)

Через что связывать поток TbloobStreeam? как в него "запихнуть" image ? и как потом этот поток залить в БД через IBquery?

На счет прочих коментов ,
// вы уверены что это прочитается из TStringStream

да, я же уже это оттестировал, и это работает.


На счет того что разные потоки используются , да согласен (но надо отдать должное , тоже работает, наверное до поры до времени).
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962214
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для чтения гугли CreateBlobStream, можно и по форуму, были примеры.
для записи можно попробовать например параметры, гугли ParamByName AsBytes
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962485
FIL23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выспался.

Нашел свою старую тему когда я впервые познакомился с потоками и разбирал их.

Так же наше у себя в программе код где я работал с Blob полями.

Теперь итог
Загрузка Картинки в БД (Через TMemoryStream):

Код: 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.
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  perIBQuery:TIBQuery ;
  Stm: TMemoryStream;

begin
perIBQuery:=my_initialization_TIBQuery_insert(perIBQuery); //èíèöèàëèçèðóåì ïåðåìåííóþ è ïåðåäàåì åé ïàðàìåòðû
perIBQuery.Active:=false;
perIBQuery.SQL.Clear;
perIBQuery.SQL.Add('insert into INVENTORY_IMAGE '
                  +'('
                  +'IMAGE_ '
                  +')'

                  +' values '
                  +'('
                  +':perIMAGE_ '
                  +')' );


 Stm := TMemoryStream.Create;
 Image1.Picture.Graphic.SaveToStream(Stm);
 Stm.Position:=0;
 perIBQuery.ParamByName('perIMAGE_').LoadFromStream( Stm, ftBlob); 
 perIBQuery.ExecSQL;
 perIBQuery.Transaction.Commit;
 stm.Free;
end;




Чтение данных из БД (через Tstream):

Код: 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.
procedure TForm1.Button2Click(Sender: TObject);
var
  perIBQuery:TIBQuery ;
  Stm:Tstream;
  perTypeImage:integer;
begin
perIBQuery:=my_initialization_TIBQuery_insert(perIBQuery); //èíèöèàëèçèðóåì ïåðåìåííóþ è ïåðåäàåì åé ïàðàìåòðû
perIBQuery.Active:=false;
perIBQuery.SQL.Clear;
perIBQuery.SQL.Add ('select * from INVENTORY_IMAGE where ID =7' );
perIBQuery.Active:=true;
perIBQuery.Last;

Stm := perIBQuery.CreateBlobStream( perIBQuery.FieldByName('IMAGE_'), bmRead);

if Stm.Size > 0 then
  begin
  perTypeImage:=PhysicalResolveFileType(Stm);
  Stm.Position:=0;
    case perTypeImage of
      1: begin      //bmp
      Image1.Picture.Graphic:=TBitmap.Create;
      Image1.Picture.Graphic.LoadFromStream(Stm);
      end;
      3: begin    //jpeg
      Image1.Picture.Graphic:=TJPEGImage.Create;//TBitmap.Create;
      Image1.Picture.Graphic.LoadFromStream(Stm);
      end;
    end;
  end;

Stm.Free;
end;




Функция PhysicalResolveFileType взята тут

Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
function PhysicalResolveFileType(AStream: TStream): Integer;

var

 p: PChar;

begin

 Result := 0;

 if not Assigned(AStream) then

  Exit;

 GetMem(p, 10);

 try

  AStream.Position := 0;

  AStream.Read(p[0], 10);

  {bitmap format}

  if (p[0] = #66) and (p[1] = #77) then

  Result := 1;

  {tiff format}

  if ((p[0] = #73) and (p[1] = #73) and (p[2] = #42) and (p[3] = #0)) or

  ((p[0] = #77) and (p[1] = #77) and (p[2] = #42) and (p[3] = #0)) then

  Result := 2;

  {jpg format}

  if (p[6] = #74) and (p[7] = #70) and (p[8] = #73) and (p[9] = #70) then

  Result := 3;

  {png format}

  if (p[0] = #137) and (p[1] = #80) and (p[2] = #78) and (p[3] = #71) and

  (p[4] = #13) and (p[5] = #10) and (p[6] = #26) and (p[7] = #10) then

  Result := 4;

  {dcx format}

  if (p[0] = #177) and (p[1] = #104) and (p[2] = #222) and (p[3] = #58) then

  Result := 5;

  {pcx format}

  if p[0] = #10 then

  Result := 6;

  {emf format}

  if (p[0] = #215) and (p[1] = #205) and (p[2] = #198) and (p[3] = #154) then

  Result := 7;

  {emf format}

  if (p[0] = #1) and (p[1] = #0) and (p[2] = #0) and (p[3] = #0) then

  Result := 7;

 finally

  Freemem(p);

 end;

end;




Всем спасибо.
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962506
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот. Еще одна база погибла. Под грузом блобов.
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962513
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FIL23
Выспался.

Когда еще выспишься, подумай хотя-бы над отдельной базой под блобы.
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962528
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а еще лучше проспаться и подумать над отдельными файлами
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962533
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блобы гибнут в базе
Их там не видно
Надо было снаружи
...
Грустят дельфисты
О зря загубленных
GUIDах
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962559
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962562
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962564
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это демотиватор. На нем фотка Филип-Филипыча который сидит
и грустно сетует о том что пропад дом.

Ну развеж я виноват что это говно https://www.meme-arsenal.com не паблишит линки по всем регионам
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962573
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну развеж я виноват что это говно https://www.meme-arsenal.com не паблишит линки по всем регионам

Здесь можно вставлять картинки.
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962581
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ладно уже. Интерес пропал.
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962661
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962674
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr,
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962687
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, Сообщений: 46374, а постить картинки не умеет.
...
Рейтинг: 0 / 0
изображение в базу и из базы
    #39962702
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы мне увы. Я и на Делфи не программирую. Много еще у меня впереди...
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / изображение в базу и из базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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