Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите побороть BLOB поля и картинки!! Помогите Плииизз!!!


Romario_123 ©   (2002-11-26 23:17:00) 

У меня есть BLOB поле как мне туда запихнуть картинку а потом ее от туда достать?
Причем нужно не только bitmap ну и jpg и gif и т.п.
Подскажите как?! а то 3 дня уже воюю!! Плииз!


Romario_123   (2002-11-27 15:25:00) [1]

Ага всем спасибо!
ТОгда есть еще вопрос...
запихиваю я в 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); //Ошибка !!!


Lola   (2002-11-27 12:22:00) [2]

Еще вариант из архива "Королевства".

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 - расширение.


exit   (2002-11-27 10:09:00) [3]

Ладно, напишу и для 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.


exit   (2002-11-27 09:58:00) [4]

P.S. Казалось бы: зачем так много кода? MemoryStream понадобится если захочешь обрабатывать и jpeg"и


exit   (2002-11-27 09:48:00) [5]


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;

Это - запихать, а вытаскивать в обратном порядке.


Sergey_   (2002-11-27 09:29:00) [6]

NameOfDataSet_NameOfField.LoadFromFile("МояКартинка.bmp") С bmp проблем нет, с jpg есть, с gif не пробовал. Но тема jpg уже на форуме обсуждалась и вроде какие-то решения были предложены.


Наверх

Титульная страница Поиск, карта сайта Написать письмо