Главная страница
    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.46 MB
Время: 0.013 c
1-43447
Petrovitch
2004-02-26 14:33
2004.03.14
установить курсор (мышкин) в какую-то определенную позицию Form.


1-43469
novi
2004-02-29 19:35
2004.03.14
Типы


14-43841
Igor_thief
2004-02-21 17:39
2004.03.14
Админам


1-43541
Valter
2004-02-26 22:10
2004.03.14
Ошибка в RichEdit


3-43356
Gerakl
2004-02-16 10:55
2004.03.14
ADO





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский