powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Tdbimage в состояние понять картинку jpg
3 сообщений из 3, страница 1 из 1
Tdbimage в состояние понять картинку jpg
    #32219881
paul_c0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том смысле, что картинки могут храниться (в базе) в 2 форматах bmp and jpg.
...
Рейтинг: 0 / 0
Tdbimage в состояние понять картинку jpg
    #32219961
olga1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Он понимает только Bitmap. Посмотри исходный код TDbImage и все поймешь.
...
Рейтинг: 0 / 0
Tdbimage в состояние понять картинку jpg
    #32220201
Дмитрий Мыльников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В следующий раз не поленись запустить поиск по слову JPG. :)

Почти месяц назад эта тема уже обсуждалась.

Сам DBImage может отобразить JPG, если подключить модуль JPEG к проекту, но он не умеет корректно их сохранять в базе и загружать из базы. Поэтому если JPG действительно нужен, то придётся писать ручками.

Далее копия старого сообщения от 7.07.2003
********************
Посмотрел как оно на самом деле работает. (У меня Delphi 5, как в более поздних не знаю).
В общем, стандартный DBImage не умеет сохранять и считывать JPG, хотя при подключении модуля JPEG умеет их отображать и загужать из файла. :(

В общем, если действительно нужен JPEG, то нужно писать ручками, используя обычный Image для просмтора. У меня получилось что-то типа:

===
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
procedure TForm1.SpeedButton1Click(Sender: TObject); 
var fEdit:boolean; 
begin //загрузка из файла 
  if OpenPictureDialog.Execute then begin 
    if Table.State=dsBrowse then begin Table.Edit; fEdit:=true; end 
    else fEdit:=false; 
    Image.Picture.LoadFromFile(OpenPictureDialog.FileName); 
    if fEdit then Table.Post; 
  end; 
end; 

procedure TForm1.TableBeforePost(DataSet: TDataSet); 
var BLOB:TBlobStream; 
begin //сохранение картинки в базе 
  BLOB:=TBlobStream.Create(TableImage,bmWrite); 
  try 
   Image.Picture.Graphic.SaveToStream(BLOB); 
  finally BLOB.Free; end; 
end; 

procedure TForm1.DataSourceDataChange(Sender: TObject; Field: TField); 
var BLOB:TBlobStream; 
Code:word; 
begin //считывание картинки из базы 
  if DataSource.State=dsBrowse then begin 
  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; 

=======
Перед загрузкой изображения считываем первые два байта и определяем тип картинки, после чего откатываем поток к началу (Seek).
Сразу предупреждаю, что со стандартным DBImage работать не будет, точнее, будет ругаться на JPG, а BMP будут показываться нормально.
И сами решите как обрабатывать режимы при вставке картинки. Я написал так, как обычно сам пишу.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Tdbimage в состояние понять картинку jpg
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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