Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
ВнизПомогите побороть BLOB поля и картинки!! Помогите Плииизз!!! Найти похожие ветки
← →
Romario_123 (2002-11-26 23:17) [0]У меня есть BLOB поле как мне туда запихнуть картинку а потом ее от туда достать?
Причем нужно не только bitmap ну и jpg и gif и т.п.
Подскажите как?! а то 3 дня уже воюю!! Плииз!
← →
Sergey_ (2002-11-27 09:29) [1]NameOfDataSet_NameOfField.LoadFromFile("МояКартинка.bmp") С bmp проблем нет, с jpg есть, с gif не пробовал. Но тема jpg уже на форуме обсуждалась и вроде какие-то решения были предложены.
← →
exit (2002-11-27 09:48) [2]
procedure TForm1.Button1Click(Sender: TObject);
var
MemStream: TMemoryStream;
Img: TBitmap;
begin
if OpenDialog.execute then
begin
Img := TBitmap.Create;
MemStream := TMemoryStream.Create;
Img.LoadFromFile(OpenDialog.FileName);
Img.SaveToStream(MemStream);
MemStream.Seek(0, soFromBeginning);
Table1.Edit;
Table1Blob.LoadFromStream(MemStream);
Table1.Post;
MemStream.Free;
Img.free;
end;
end;
Это - запихать, а вытаскивать в обратном порядке.
← →
exit (2002-11-27 09:58) [3]P.S. Казалось бы: зачем так много кода? MemoryStream понадобится если захочешь обрабатывать и jpeg"и
← →
exit (2002-11-27 10:09) [4]Ладно, напишу и для Jpeg"a:
uses Jpeg;
...
procedure TForm1.Button1Click(Sender: TObject);
var
MemStream: TMemoryStream;
Img: TBitmap;
jImg: TJPEGImage;
begin
if OpenDialog.execute then
try
Img := TBitmap.Create;
jImg := TJPEGImage.Create;
MemStream := TMemoryStream.Create;
Img.LoadFromFile(OpenDialog.FileName);
jImg.Assign(Img);
jImg.CompressionQuality := 60;
jImg.SaveToStream(MemStream);
MemStream.Seek(0, soFromBeginning);
Table1.Edit;
Table1Blob.LoadFromStream(MemStream);
Table1.Post;
finally
MemStream.Free;
Img.free;
jImg.Free;
end;
end;
То есть, имеется в виду, что открываем BMP, а в базу сохраняем уже JPEG.
← →
Lola (2002-11-27 12:22) [5]Еще вариант из архива "Королевства".
var
St: TMemoryStream;
GraphicClass: TGraphicClass;
NewGraphic: TGraphic;
begin
Ext := AnsiLowerCase(Ext);
if Ext = "bmp" then GraphicClass := TBitmap
else if Ext = "gif" then GraphicClass := TGIFImage
else if Ext = "jpg" then GraphicClass := TJPEGImage
else if Ext = "jpeg" then GraphicClass := TJPEGImage
else if Ext = "ico" then GraphicClass := TIcon
else if Ext = "wmf" then GraphicClass := TMetaFile
else if Ext = "emf" then GraphicClass := TMetaFile
// При желании список можно продолжать до бесконечности,
// но тогда необходимо написать TMyFormatImage = class(TGraphic)
else begin
Picture.Assign(nil);
Exit;
end;
NewGraphic := GraphicClass.Create;
try
St := TMemoryStream.Create;
try
Data.SaveToStream(St);
St.Position := 0;
NewGraphic.LoadFromStream(St);
Picture.Assign(NewGraphic);
finally
St.Free;
end;
finally
NewGraphic.Free;
end;
end;
где Picture - свойство Picture:TPicture у любого объекта иги имеющего,
Data - поле, содержащее саму кортинку,
Ext - расширение.
← →
Romario_123 (2002-11-27 15:25) [6]Ага всем спасибо!
ТОгда есть еще вопрос...
запихиваю я в BLOB поле так как написать
а вот достать не могу... :((( в чем ощибка?
Stream3:=TMemoryStream.Create;
Stream2:=RecipT.CreateBlobStream(RecipT.FieldByName("img"), bmRead);
Stream2.Seek(0,0);
stream2.read(Stream3,Stream2.Size);
Stream3.Seek(0,0);
stream3.SaveToFile("c:\233.jpg"); //все нормально сохранеят..
Image1.Image.Graphic.LoadFromStream(Stream3); //Ошибка !!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c