Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2007, 10:16   #1
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию Запись *.jpg в blob

Добрый день! Подскажите, как записать в blob-поле файл с расширением *.jpg? Написал такую процедуру:
Код:
 
procedure TFKart.DBImage1Click(Sender: TObject);
begin
   if not DM.OPDialog1.Execute then exit;
   DM.DSKart.Edit;
    TBlobField(DM.DSKart.FieldByName('PICTURES')).LoadFromFile(DM.OPDialog1.FileName);
end;
Но она записывает только следующие форматы файлов: bmp, ico, emf, wmf!? Что -то мне подсказывает, что DBImage не поддерживает jpg, это так???

Последний раз редактировалось John_chek; 02.04.2007 в 10:37.
John_chek вне форума Ответить с цитированием
Старый 02.04.2007, 12:32   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Delphi приложения вообще не работают с другими форматами (Седьмой версии - точно) при условии, что формат не описывается собственноручно. Прийдется делать свой DBImage с поддержкой JPEG.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 02.04.2007, 13:51   #3
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию

Если кто делал может поделитесь??
John_chek вне форума Ответить с цитированием
Старый 02.04.2007, 14:51   #4
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

я лично делал так...
для такого дела писал специальный модуль
Код:
unit uJobFieldBlob;
interface
uses jpeg, Classes, Graphics, DB, SysUtils;
  function GetStreamImgType(Stream: TStream): TClass;
  procedure LoadProperImage(Stream: TStream; Picture: TPicture);
  function LoadPictureFromBLOB(Picture: TPicture; Field: TBlobField): boolean;
  procedure SavePictureToBlob(Picture: TPicture; Field: TBlobField);
implementation
function GetStreamImgType(Stream: TStream): TClass;
var
  StreamPos: int64;
  ImgSign: string;
begin
  StreamPos := Stream.Position;
  try
    //BMP если не определено
    Result := Graphics.TBitmap;
    //JPEG
    SetLength(ImgSign, 4);
    Stream.Seek(6, soFromCurrent);
    Stream.Read(ImgSign[1],4);
    if (UpperCase(ImgSign) = 'JFIF') or (UpperCase(ImgSign) = 'EXIF') then
      Result := Jpeg.TJPEGImage;
    //WMF
    Stream.Position := StreamPos;
    SetLength(ImgSign, 4);
    Stream.Read(ImgSign[1],4);
    if ImgSign = #$D7#$CD#$C6#$9A then
      Result := Graphics.TMetafile;
  finally
    Stream.Position := StreamPos;
  end;
end;
procedure LoadProperImage(Stream: TStream; Picture: TPicture);
var
  Img: TGraphic;
  StreamPos: int64;
begin
  StreamPos := Stream.Position;
  Img := TGraphicClass(GetStreamImgType(Stream)).Create;
  try
    Stream.Position := StreamPos;
    Img.LoadFromStream(Stream);
    Picture.Graphic := Img;
  finally
    Img.Free;
  end;
end;
function LoadPictureFromBLOB(Picture: TPicture; Field: TBlobField): boolean;
var
  Stream: TStream;
begin
  Result := False;
  if not Field.isNULL then
  begin
    Stream := TMemoryStream.Create;
    try
      Field.SaveToStream(Stream);
      Stream.Position := 0;
      LoadProperImage(Stream, Picture);
      Result := True;
    finally
      Stream.Free;
    end;
  end;
end;
procedure SavePictureToBlob(Picture: TPicture; Field: TBlobField);
var
  Stream: TStream;
begin
  if not (Field.DataSet.State in [dsEdit, dsInsert]) then
    Field.DataSet.Edit;
  Field.Clear;
  if Assigned(Picture.Graphic) then
    if not Picture.Graphic.Empty then
      begin
        Stream := TMemoryStream.Create;
        try
          Picture.Graphic.SaveToStream(Stream);
          Stream.Position := 0;
          Field.LoadFromStream(Stream);
        finally
          Stream.Free;
        end;
      end;
end;
end.
это модуль прекрасно работает... сам использую по нынешний день..
dron-s вне форума Ответить с цитированием
Старый 03.04.2007, 11:35   #5
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию

Большое спасибо!!
John_chek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Blob полем Constellation БД в Delphi 6 24.01.2008 18:58
JPEG и Blob полях Prisian БД в Delphi 5 25.04.2007 09:04
картинки в BLOB полях Toxa БД в Delphi 1 23.04.2007 13:34
BLOB в string _andrews_ БД в Delphi 0 20.04.2007 12:05
BLOB+Mysql+DbExpress Квэнди БД в Delphi 3 02.03.2007 18:01