Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

jpg в базу данных   Найти похожие ветки 

 
Kraj   (2004-08-23 13:52) [0]

Как впихнуть рисунок формата jpg в базу данных форматов dBESE, Paradox или Accesse. Формат bmp получается, но очень раздувает базу.


 
Desdechado ©   (2004-08-23 19:40) [1]

"Впихнуть" можно в каком угодно формате, для этого BLOB-поля предназначены. А вот как ты будешь отображать или преобразовывать хранимое в БД, это твоя задача. Лень-матушка тут не советчик, поэтому на встроенные форматы и компоненты не слишком надейся.


 
Zif ©   (2004-08-23 21:00) [2]

Могу лишь это подсказать (ссылки из разных мест):
1. (номер один)
В комплект поставки Delphi входит модуль JPEG. Он позволяет работать с изображениями в формате JPEG. Эта программа открывает выбранный файл и выводит изображение на форму.

uses Jpeg;

procedure TForm1.Button1Click(Sender: TObject);
var
 JpegIm: TJpegImage;
 bm: TBitMap;
begin
 if OpenDialog1.Execute = false then
   Exit;
 bm := TBitMap.Create;
 JpegIm := TJpegImage.Create;
 JpegIm.LoadFromFile(OpenDialog1.FileName);
 bm.Assign(JpegIm);
 Form1.Canvas.Draw(0, 0, bm);
 bm.Destroy;
 JpegIm.Destroy;
end;


2. (номер 2)
uses JPEG;

procedure TForm1.Button1Click(Sender: TObject);
var
 JPEG: TJPEGImage;
 Bitmap: TBitmap;
begin
 JPEG := TJPEGImage.Create;
 Bitmap := TBitmap.Create;
 try
   Bitmap.LoadFromFile("C:\Program Files\Common Files\alarm.bmp");
   JPEG.Assign(Bitmap);
   Image1.Picture.Assign(JPEG);
 finally
   JPEG.Free;
   Bitmap.Free;
 end;
end;


3. (номер три) - этот код работает ТОЛЬКО с bmp
procedure TForm.ButtonClick(Sender: TObject);
begin
if OpenDialog1.Execute then
 begin
 DataModule1.ADOQuery1.Edit;
 DataModule1.ADOQueryImage.LoadFromFile(OpenDialog1.FileName);
 DataModule1.ADOQuery1.Post;
 end;
end;


4. (номер четыре)
Я ЛИЧНО САМ ДАВНО ИЩУ ОТВЕТ НА ТАКОЙ ВОПРОС, НО ОТВЕТА ТАК И НЕ НАШЁЛ... ЕСЛИ НАЙДЁШЬ ОТВЕТ - НАПИШИ ЗДЕСЬ. БУДУ ОЧЕНЬ БЛАГОДАРЕН. УТОЧНЮ НЕМНОГО ТВОЙ ВОПРОС:
Есть mdb-файл, в нем в таблице поле типа "Поле объекта OLE". Hа форме TADOQuery выбирает это поле как TBlobField. Делаю LoadFromFile и пытаюсь запихнуть туда jpg-файл. Ругается, что "Bitmap image is not valid". В свойствах поля стоит BlobType = ftBlob. Как мне сохранить в это поле jpg-файл и ПОСМОТРЕТЬ?


 
Zif ©   (2004-08-23 23:31) [3]

ещё нашёл один из ответов. правда ничего не понял... кто разберется подскажите.

Как вставить с помощью DBImage картинку в формате JPEG?
1. В Uses добавляешь Jpeg
 2. Перед получением картинки из файла или еще откуда принимаешь решение
какой наследник TGraphic породить.
 3. Загружаешь картинку в нужный график
Если хочешь хранить картинки в таблице БД, можно хранить в отдельном поле некий
идентификатор типа,
например расширение файла.

Для примера даю фрагмент своего компонента:

 TfxImage = class(TCustomControl)
 private
   FPicture: TPicture;
   FFileExt: string;
   ...
 public
   procedure LoadFromStreamEx(St: TStream; const Ext: string);
   procedure LoadFromFile(const FileName: string);
 end;

function GraphicFileExt(const AFileName: string): string;
begin
  Result := ExtractFileExt(AFileName);
  if Result = "" then Result := ExtractFileName(AFileName)
  else Result := Copy(Result, 2, 255);
  if Result = "" then Result := "bmp"
  else Result := LowerCase(Result);
end;

function ExtToGraphicClass(const AExt: string): TGraphicClass;
begin
 if      AExt = "bmp"  then Result := TBitmap
 else if AExt = "gif"  then Result := TGIFImage
 else if AExt = "jpg"  then Result := TJPEGImage
 else if AExt = "jpeg" then Result := TJPEGImage
 else if AExt = "ico"  then Result := TIcon
 else if AExt = "wmf"  then Result := TMetaFile
 else if AExt = "emf"  then Result := TMetaFile
                       else Result := nil;
end;

procedure TfxImage.LoadFromStreamEx(St: TStream; const Ext: string);
var
 GraphicClass: TGraphicClass;
 NewGraphic: TGraphic;
begin
 GraphicClass := ExtToGraphicClass(Ext);
 NewGraphic := nil;
 try
   NewGraphic := GraphicClass.Create;
   NewGraphic.Transparent := Transparent;
   NewGraphic.LoadFromStream(St);
   FPicture.Assign(NewGraphic);
 except
   NewGraphic.Free;
   raise;
 end;
 NewGraphic.Free;
 FFileExt := Ext;
end;

procedure TfxImage.LoadFromFile(const FileName: string);
var
 Ext: string;
 St: TMemoryStream;
begin
 Ext := GraphicFileExt(FileName);
 St := nil;
 try
   St := TMemoryStream.Create;
   St.LoadFromFile(FileName);
   St.Position := 0;
   LoadFromStreamEx(St, Ext);
 except
   St.Free;
   raise;
 end;
 St.Free;
end;


 
Zif ©   (2004-08-23 23:42) [4]

ещё накопал:
(VCL)  Подскажите  как правильно показать на экpане и сохранить в  базе картинку формата JPEG?
 
Я делал так (это кусок компонента):
 
 if Picture.Graphic is TJPegImage then
 begin
   bs:=TBlobStream.Create(TBlobField(Field),bmWrite);
   Picture.Graphic.SaveToStream(bs);
   bs.Free;
 end
 else if Picture.Graphic is TBitmap then
 begin
   Jpg:=TJPegImage.Create;
   Jpg.CompressionQuality:=...;
   Jpg.PixelFormat:=...;
   Jpg.Assign(Picture.Graphic);
   Jpg.JPEGNeeded;
   bs:=TBlobStream.Create(TBlobField(Field),bmWrite);
   Jpg.SaveToStream(bs);
   bs.Free;
   Jpg.Free;
 end else Field.Clear;


 
Zif ©   (2004-08-24 00:01) [5]

if Picture.Graphic is TJPegImage then
begin
 bs := TBlobStream.Create(TBlobField(Field), bmWrite);
 Picture.Graphic.SaveToStream(bs);
 bs.Free;
end
else if Picture.Graphic is TBitmap then
begin
 Jpg := TJPegImage.Create;
 Jpg.CompressionQuality := ...;
 Jpg.PixelFormat := ...;
 Jpg.Assign(Picture.Graphic);
 Jpg.JPEGNeeded;
 bs := TBlobStream.Create(TBlobField(Field), bmWrite);
 Jpg.SaveToStream(bs);
 bs.Free;
 Jpg.Free;
end else
 Field.Clear;


Примечание
Вы не забыли объявить переменную bs как TBlobStream?


 
Zif ©   (2004-08-24 00:38) [6]

Как с помощью TJpegImage гpузить *.jpeg

begin
 JPEG := TJPEGImage.Create;
 try
   JPEG.LoadFromFile("C:\TEMP\SOMEIMAGE.JPEG");
   MainImage.Picture.Assign(JPEG);
   MainImage.Invalidate;
 finally
   JPEG.Free;
end;


 
Kraj   (2004-08-24 10:00) [7]

Огромное спасибо за такой объем информации. Буду разбираться. Если получится обязательно напишу.


 
Zif ©   (2004-08-24 15:46) [8]

зайди на сайт http://www.mwasoftware.co.uk/jpeg/index.htm . этот компонент вроде работает корректно (установился у меня и отображает - редактирует). загрузил только пару картинок. ничего не обещаю. но он РАБОТАЕТ!!!


 
Zif ©   (2004-08-24 17:09) [9]

Замечательный компонент!!! даже несколько приятных функций добавлено!!! даже "лекарство" существует!


 
Kraj   (2004-08-26 13:52) [10]

Компонент скачал ноеще не устанавливал. но вот возник вопрос по переменной bs: TBlobStream
При попытке "открыть" переменную требует внести параметры
bs := TBlobStream.Create(TBlobField(Field), bmWrite);
Где можно найти описание этих параметров?


 
Desdechado ©   (2004-08-26 14:01) [11]

вообще-то BlobStream лучше от датасета создавать
query.createblobstream

>Где можно найти описание этих параметров?
кнопку F1 выломал от незнания, что с ней делают?


 
Zif ©   (2004-08-26 20:53) [12]

Чего вы голову ломаете? просто напишите этот код и используйте компонент с http://www.mwasoftware.co.uk/jpeg/index.htm
procedure TForm.ButtonClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
ADOQuery1.Edit;
ADOQueryImage.LoadFromFile(OpenDialog1.FileName); //ADOQueryImage - имя строки
ADOQuery1.Post;
end;
end;

все работает отлично!!!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.029 c
3-1093931276
nalsur2002
2004-08-31 09:47
2004.09.26
Delphi и MSSQL


1-1094571759
Klopan
2004-09-07 19:42
2004.09.26
CopyFile


10-1039114747
Alexei113
2002-12-05 21:59
2004.09.26
Как мне быть


14-1094220147
Мазут Береговой
2004-09-03 18:02
2004.09.26
Вернулся. Живой. Почти без потерь...


14-1094213765
}|{yk
2004-09-03 16:16
2004.09.26
Не мог бы кто проконсультировать...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский