Главная страница
    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
14-43877
ИМХО
2004-02-20 05:06
2004.03.14
По ночам сайт определенно в дауне


1-43508
Tatyana
2004-02-28 23:14
2004.03.14
SaveDialog.FileName := OpenDialogFileName .....


14-43758
ищущий
2004-02-19 13:01
2004.03.14
параллельный вывод на lpt и com


3-43405
Alexander Smith
2004-02-13 01:22
2004.03.14
TTable, TTable.Filter


14-43815
Феликс
2004-02-22 18:44
2004.03.14
Просьба подсказать программу для торговой фирмы.





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