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

Вниз

Как записать картинки типа jpg и gif в базу   Найти похожие ветки 

 
чайник1   (2004-05-12 07:23) [0]

Уважаемые мастера, почему при записи в тип поля Image на MSSQL записываются только картинки типа bmp, как записать другой тип jpg, gif? спасибо. Текст такой:

procedure TForm1.Button4Click(Sender: TObject);
begin
form1.rr.Open;
form1.rr.Active:=true;
form1.rr.Append;
form1.rr.FieldByName("den").asinteger:=kk;
form1.rr.FieldByName("text_p").Assign(form1.im1.picture);
form1.rr.Post;
form1.rr.Refresh;
kk:=kk+1;
end;


 
Мунька ©   (2004-05-12 18:26) [1]

А вы уверены, что Вам надо записать именно картинки? Можно хранить ссылки на них, а сами картинки держать в каталоге


 
Shkut ©   (2004-05-12 18:59) [2]

Если внмательно полазить по исходникам компонентов, то увидите, что в объекте TGraphics не реализована поддержка чего-то типа TJpeg или TGif, а TBitmap там есть.
Расширьте свой компонент, чтобы он раскодировал эти форматы, и Assign их с полем базы. Полю все равно, что хранить, ошибка на стадии работы в Delphi.


 
Мунька ©   (2004-05-12 19:10) [3]

TGif не реализован, jpg реализован


 
Romkin ©   (2004-05-12 19:25) [4]

jpg - в отдельном модуле, который добавляет своего потомка от TGraphic. Можно и такую же реализацию gif найти ;)
А качать - через поток, распознавая, что за формат и создавая нужного потомка вручную.
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;



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

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

Наверх





Память: 0.46 MB
Время: 0.032 c
1-1084567919
LORDMAXX
2004-05-15 00:51
2004.05.30
Где лежит номер лицензии Windows?


8-1079904163
dance
2004-03-22 00:22
2004.05.30
gif


1-1084633198
Ivolg
2004-05-15 18:59
2004.05.30
Memo


14-1084192118
Курдль
2004-05-10 16:28
2004.05.30
К алгоритмическим полиглотам - вопрос о переходе на C#.


4-1082095485
Def_E
2004-04-16 10:04
2004.05.30
ShellExecute и пути поиска





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