Форум: "Базы";
Текущий архив: 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. (номер три) - этот код работает ТОЛЬКО с bmpprocedure 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.031 c