Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/23: Рейтинг темы: голосов - 23, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 11.11.2009
Сообщений: 164
1

Как сохранить картинку *.bmp в MSSQL

27.04.2012, 15:13. Показов 4345. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Есть таблица sotrudniki, содержащая поля fio(фио сотрудника), tab_num(табельный номер), iso(фотография сотрудника) в MSSQL

sotrudniki
SQL
1
2
3
4
    
fio                  VARCHAR(50)
tab_num          VARCHAR(10)
iso                  image
Для заполнения таблицы создал форму в Delphi7. На форме располагаются элементы
MaskEdit2(ФИО), MaskEdit3(Таб. номер), BitBtn1(кнопка для открытия фотографии), OpenPictureDialog1, Button1(для обработчика события заполнения таблицы).
Картинку открываю так

Delphi
1
2
3
4
5
procedure TFNewSotrudniki.BitBtn1Click(Sender: TObject);
begin
   if OpenPictureDialog1.Execute then
         BitBtn1.Glyph.LoadFromFile(OpenPictureDialog1.FileName);
end;
Обработчик события заполнения таблицы

Delphi
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 TFNewSotrudniki.Button1Click(Sender: TObject);
var
i:integer;
  p0:string;
  p1:string;
  p13:TBitmap;
begin
 
//присвоение значений переменным
  p0:=MaskEdit2.Text;  //фио
  p1:=MaskEdit3.Text;  //таб.номер
  p13:=BitBtn1.Glyph;   //фотография
  
   DataModule1.ADOQAddSotrudnik.Close;
   DataModule1.ADOQAddSotrudnik.SQL.Clear;
//добавление данных
   DataModule1.ADOQAddSotrudnik.SQL.Add('INSERT INTO sotrudniki (fio, tab_num, iso)');
   DataModule1.ADOQAddSotrudnik.SQL.Add('VALUES ('+quotedstr(p0)+','+quotedstr(p1)+',:p13)');
   DataModule1.ADOQAddSotrudnik.ExecSQL;
 
//очистка полей
                    MaskEdit2.Text:='';
                    MaskEdit3.Text:='';
end;
Выбрав, картинку и заполнив поля ввод, мы нажимаем на кнопку заполнения таблицы и поля fio, tab_num заполняются, а вот поле iso остаётся пустым. Соответственно сохранение фотографии не происходит. Подскажите пожалуйста, что делать. Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2012, 15:13
Ответы с готовыми решениями:

Как сохранить картинку из буфера обмена в файл bmp
Ребята, как с помощью WinAPI сохранить картинку из буфера обмена CF_DIB, в файл .bmp Совсем...

Как сохранить картинку в формате .bmp, если ее разрешение больше чем у экрана?
Всех с Новым, 2019 Годом. Очень надеюсь на помощь форумчан, в одном важном вопросе. Подскажите...

Создать и сохранить картинку *.bmp 24bit
Возможно ли в Pascal ABC Net создать и сохранить картинку в *.bmp 24bit? Пробовал через GraphABC -...

Как добавить картинку в поле в mssql?
Необходимо создать поле в котором будут картинки. Какой тип данных выбрать и как загрузить картинку...

4
33 / 28 / 7
Регистрация: 17.04.2012
Сообщений: 59
28.04.2012, 12:04 2
я прикрепляю фото вот так, надеюсь разберешься:
Delphi
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
var
  MyJpeg: TJpegImage;
  MS: TMemoryStream;
begin
  if OpenPictureDialog1.Execute(Handle) = True then
  begin
    try
      Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
      MyJpeg := TJpegImage.Create;
      MyJpeg.Assign(Image1.Picture);
      // MyJpeg.CompressionQuality := 90;
      // MyJpeg.Compress;
      MS := TMemoryStream.Create;
      MyJpeg.SaveToStream(MS);
      MS.Position := 0;
 
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Text :=
        'UPDATE KadrySotrudniki SET Foto=:Foto WHERE id=:id';
      ADOQuery1.Parameters.ParamByName('id').Value := StringGridSotrudnik.Cells
        [10, StringGridSotrudnik.Row];
      ADOQuery1.Parameters.ParamByName('Foto').LoadFromStream(MS, ftBlob);
      ADOQuery1.ExecSQL;
 
      MS.Position := 0;
      Image1.Picture.Assign(MyJpeg);
      MS.Free;
      MyJpeg.Free;
 
    except
      MessageBox(Handle, 'Не удалось загрузить фотографию', 'Ошибка загрузки',
        MB_OK + MB_ICONERROR);
      exit;
    end;
    MessageBox(Handle, 'Фотография успешно загружена', 'Загрузка фотографии',
      MB_OK + MB_ICONINFORMATION);
  end;
0
637 / 415 / 27
Регистрация: 03.11.2009
Сообщений: 1,855
28.04.2012, 13:58 3
еще можно конвертировать в base64 и хранить в базе
0
0 / 0 / 1
Регистрация: 19.02.2015
Сообщений: 43
19.02.2015, 12:37 4
Тоже самое но у меня наворот, как читать из базы ?
0
33 / 28 / 7
Регистрация: 17.04.2012
Сообщений: 59
21.02.2015, 20:31 5
Надеюсь это наведет тебя на решение твоего вопроса:
Delphi
1
2
3
4
5
6
7
    ZL := TMemoryStream.Create;
    ZDecompressStream(ADOQuery1.CreateBlobStream(ADOQuery1.FieldByName('q'),
      bmread), ZL);
    ZL.Position := 0;
    JvQ.Clear;
    JvQ.Lines.LoadFromStream(ZL);
    FreeAndNil(ZL);
0
21.02.2015, 20:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2015, 20:31
Помогаю со студенческими работами здесь

Как вывести на экран bmp картинку
но как именно?

Как преобразовать код в картинку BMP
У меня есть картинка BMP в виде такого текста, как его преобразовать в изображение ? ...

как с bmp сохранить в gif
У меня есть картинка бмп которую я загрузил в paint box мне нужно зделать так чтобы она могла...

Как повернуть bmp картинку на n градусов (wingraph)
Собственно как повернуть bmp картинку на n градусов (wingraph) в free pascal?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru