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

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

Jpg в Blob через TStream [D7, Paradox]


Страницы:   1 2

explorer ©   (2003-09-02 10:20:00) 

Мастера!
Посмотрел примеры по сабжу в форуме и попробовал такое же сделать. При записи картинки ругается "Bitmap image is not valid". Подскажите, где я чего не учел и как все правильно реализовать?

запись:

begin

if OpenPictureDialog1.Execute then
begin
f := OpenPictureDialog1.FileName;
Image1.Picture.LoadFromFile(f);
end;

try
ms := TMemoryStream.Create;
jpg := TJPEGImage.Create;
jpg.LoadFromFile(f);
jpg.SaveToStream(ms);
ms.Position := 0;
with Table1 do
begin
Edit;
Insert;
TBlobField(FieldByName("Kartinka")).LoadFromStream(ms);
Post;
end;
finally
ms.Free;
jpg.Free;
end;
end;

чтение:

try

ms := TMemoryStream.Create;
TBlobField(Table1.FieldByName("Kartinka")).SaveToStream(ms);
jpg := TJPEGImage.Create;
ms.Position := 0;
jpg.LoadFromStream(ms);
Image2.Picture.Assign(jpg);
finally
ms.Free;
jpg.Free;
end;


explorer   (2003-09-05 11:58:00) [1]

ВСЕ! Всем спасибки! Получилось!


Hawk2   (2003-09-05 10:07:00) [2]

А внести в базу уже получается?


explorer   (2003-09-05 06:21:00) [3]

>Hawk2
а как после этого вывести картинку в Image?


Arm79   (2003-09-04 17:08:00) [4]

А информация читается в DBImage?


Hawk2   (2003-09-04 16:54:00) [5]

У меня вот так все нормально записывает:

procedure TForm1.Button2Click(Sender: TObject);
begin
IBTable1.Append;
TBLOBField(IBTable1.FieldByName("Image")).LoadFromFile("C:\Downloads\m p3\"+Edit1.Text+".jpg");
IBTable1.Post;
end;

Просьба к коду не придираться, он написан исключительно для пробы.


Arm79   (2003-09-04 16:34:00) [6]

У меня тоже возникла подобная проблема.

procedure WriteToDB;
var
S:TADOBLOBStream;
J:TJPEGImage;
begin
if OpenPictureDialog1.Execute
then begin
ADOTable1.Edit;
S:=ADOTable1.CreateBLOBStream(ADOTable1Photo, bmReadWrite);
J:=TJPEGImage.Create;
J.LoadFromFile(OpenPictureDialog1.FileName);
J.SaveToStream(S);
ADOTable1.Post;
end;
end;

Прикол в том, что таблица переходит в режим редактирования, картинка грузится в J(и корректно отображается в Image), записывается в поток (проверял размеры), но после Post данные из потока теряются, а в БД ничего не заносится.

А когда я записываю бмп, все нормально. И считываю без проблем.


Digitman   (2003-09-04 13:56:00) [7]

"грабли" как минимум в том, что создал ты объект TBlobStream в доступом только по записи (bmWrite), и тут же, через пару строк, пытаешься обратиться к нему по чтению)


explorer   (2003-09-04 13:18:00) [8]

Сделал так:
var
blob :TBlobStream;
jpg : TJPEGImage;

try
with DataModule1.Table1 do
begin
Insert;
BLOB:= TBlobStream.Create(TBlobField(FieldByName("Kartinka")),bmWrite);
Post;

jpg.LoadFromStream(blob);
Image2.Picture.Graphic := jpg;

end;
finally
jpg.Free;
blob.Free;
end;

При записи в Image выдает ошибку "Jpeg error #42" !
Где грабли?


explorer   (2003-09-04 06:15:00) [9]

>Hooch ©
спасибо! Но, для начала, все же хотелось бы, этот *.jpg туда записать


Hooch   (2003-09-03 14:47:00) [10]

вот рабочий пример чтения Jpeg из базы в Image
var
NewGraphic: TJPEGImage;
begin

if (actDoReceipt.Checked) and (not adoData.IsEmpty) then
begin
adoImage.Close;
adoImage.Parameters.ParamValues["@WareID"] := adoData.FieldValues["WareID"];
adoImage.Open;

if (not adoImage.IsEmpty) and (not adoImage.FieldByName("Picture").IsNull) then
begin
NewGraphic := TJPEGImage.Create;
try
NewGraphic.Assign(adoImage.FieldByName("Picture"));
imgImage.Picture.Graphic := NewGraphic;
finally
NewGraphic.Free;
end;
end
else
imgImage.Picture.Assign(nil);


Digitman   (2003-09-03 14:40:00) [11]


> но почему то работает только опять же с bmp, а с jpg - "Bitmap
> image is not valid"... и не могу понять где грабли


на какой конкретно строчке в твоем коде приложение падает с таким исключением ? приводи обновленный фрагмент чтения и записи


explorer   (2003-09-03 13:36:00) [12]

>Digitman ©
да пока проблемсы только с записью
Делаю как посоветовал Verg © (02.09.03 14:20) [8], но почему то работает только опять же с bmp, а с jpg - "Bitmap image is not valid"... и не могу понять где грабли


Digitman   (2003-09-03 13:24:00) [13]


> explorer


я так что-то до сих пор и не понял - у тебя проблемы с записью в базу ? или со считыванием ранее успешно выполненной записи ?


explorer   (2003-09-03 12:20:00) [14]

Может в настройках BDE или самого Blob-поля надо что-то изменить?


explorer   (2003-09-03 10:00:00) [15]

>Nikky ©
Сделал так же. :(
Если выбираю *.jpg ошибка, если bmp - то все норм.
Где я мог оплошаться или что-то в коде не учел?


Nikky   (2003-09-03 09:49:00) [16]

:) правильный ответ:


> Verg © (02.09.03 14:20) [8]


explorer   (2003-09-03 08:46:00) [17]

>Digitman ©
а как тогда все же *.jpg записать в базу?
Все что здесь предложили, почему то не работает с *.jpg :(


Digitman   (2003-09-03 08:30:00) [18]

Image2.Picture.Graphic := jpg;


explorer   (2003-09-03 07:49:00) [19]

при этом *.bmp без проблем загружается


explorer   (2003-09-03 07:29:00) [20]

>Hooch
А как же тогда отобразить картинку из БД?

>Verg ©
Все равно выдает сообщение "Bitmap image is not valid" :(


Страницы:   1 2

Наверх

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