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

Вниз

Помогите побороть 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
3-51621
DIV
2002-11-28 07:59
2002.12.16
Как избавиться от сообщения A Win32 API functuion failed


4-52008
Обсолютный Ноль
2002-11-03 21:40
2002.12.16
Ламерский вопрос


3-51633
Oxy
2002-11-28 10:14
2002.12.16
Почему такие прблемы?


6-51849
VitaWED
2002-10-17 22:08
2002.12.16
Соединение по модему.


7-51985
max2057
2002-10-14 22:27
2002.12.16
Массивчики! байт и хеши