Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

Не отображаются jpeg картинки в DBImage?   Найти похожие ветки 

 
Ramdom   (2004-02-17 13:55) [0]

Заношу jpeg картинки в Blob поля, но при просмотре записей они не отображаются в Dbimag"e, хотя с Bmp картинками все в порядке.

P.S. Нужно вносить именно jpeg.


 
Hooch ©   (2004-02-17 13:57) [1]

либо брать Image и ручками заряжать его, либо делать наследника от DBImage либо воспольоватся стороннимим компонентами


 
Ramdom   (2004-02-17 14:03) [2]

А по какой причине в DbImage не предусмотрен просмотр jpeg файлов?


 
Reindeer Moss Eater ©   (2004-02-17 14:26) [3]

Примерно по той же, по которой не предусмотрен просмотр DVD AVI MPEG MP3 DOC XLS и т.д.


 
Val ©   (2004-02-17 14:34) [4]

Погодите. Что-то мне помнится, что при подключении jpeg модуля, .jpg все-же там отображается, проверьте, могу ошибаться.


 
Romkin ©   (2004-02-17 14:37) [5]

Нет, не отображается. Выход - использовать обычный TImage.

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;


Употреблять, ессно

LoadPictureFromBLOB(Image1.Picture, Dataset.FieldByName("img") as TBLOBField);

Пора это в ФАК вставлять...



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

Текущий архив: 2004.03.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
3-43313
orger
2004-02-17 10:46
2004.03.14
Индексные поля


1-43489
dr Tr0jan
2004-02-29 13:48
2004.03.14
Передача данных между сервисом и CPL-апплетом


1-43488
Роман К
2004-02-29 14:01
2004.03.14
Можно ли включить визуальный стиль XP только для своей программы


14-43870
человек в сети
2004-02-05 01:01
2004.03.14
нужна дока (или исходники) о создании чата для локалки ...


14-43775
тихий вовочка
2004-02-18 23:59
2004.03.14
задачка