Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Tdbimage в состояние понять картинку jpg / 3 сообщений из 3, страница 1 из 1
28.07.2003, 18:42
    #32219881
paul_c0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tdbimage в состояние понять картинку jpg
В том смысле, что картинки могут храниться (в базе) в 2 форматах bmp and jpg.
...
Рейтинг: 0 / 0
28.07.2003, 20:24
    #32219961
olga1999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tdbimage в состояние понять картинку jpg
Нет. Он понимает только Bitmap. Посмотри исходный код TDbImage и все поймешь.
...
Рейтинг: 0 / 0
29.07.2003, 09:59
    #32220201
Дмитрий Мыльников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tdbimage в состояние понять картинку jpg
В следующий раз не поленись запустить поиск по слову 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
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Tdbimage в состояние понять картинку jpg / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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