![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не могу записать в InterBase JPG (c BMP - нормально) [D5, IB5.x]
fishka © (2006-08-09 11:50:00)Вот кусочек программы, который работает если информацию брать из BMP:
IBTable3.Edit;
(IBTable3.FieldByName('area') as TBlobField).LoadFromStream(FS);
IBTable3.Post;
Что надо изменить, чтобы можно было использовать файлы типа JPG?
sniknik (2006-08-17 15:37:00) [1]> Проблема была в TDBImage. И вылетало именно на указанной строке.
> В чем же была моя ложь?
а в [16] не понятно написано в чем? и это кстати подтвердилось... TDBImage там не участвует.
Desdechado (2006-08-17 11:21:00) [2]> Проблема была в TDBImage.
О чем я тебе еще в [8] неделю назад сказал.
fishka (2006-08-17 09:57:00) [3]sniknik © (15.08.06 13:14) [16]
понятно все! а именно то, что ты попросту вреш...
Проблема была в TDBImage. И вылетало именно на указанной строке.
В чем же была моя ложь?
Romkin © (15.08.06 14:42) [18]
Спасибо за "телепатию".
Проблема решилась по JPG.
Надо еще gif записать попробовать.......
Stanislav (2006-08-15 15:16:00) [4]fishka (15.08.06 15:02) [22]
Windows.patblt
Это помоему закраска, в однотонный цвет если нет фотки.
А вызывать нужно на AfterScroll запроса.
Вообще я ее давно не использую с тех пор как установил себе cxLib, там это все решено.
fishka (2006-08-15 15:02:00) [5]Да, как все у меня запущено..........
Что за зверь patBlt ?
Romkin (2006-08-15 15:00:00) [6]А посмотреть по ссылке пример использования?
А именно строчку
LoadPictureFromBLOB(img1.Picture, Dataset.FieldByName('PICTURE') as TBLOBField);
???
Читать надо все, что написано, а не просто копипастить
Stanislav (2006-08-15 14:50:00) [7]Тебе нужно положить на форму просто TImage и использовать эту функцию:
uses ...,JPEG;
...
function ShowJPG (Field:TBlobField;var Image:TImage):Integer;
var S:TMemoryStream;J:TJPEGImage;
begin
Result:=0;
if not Field.DataSet.Active or Field.IsNull
then
begin
Image.Canvas.Brush.Color:=clBtnFace;
Image.Canvas.FloodFill(0,0,clWhite,fsSurface);
patBlt (Image.Canvas.Handle ,0,0,Image.Picture.Width,Image.Picture.Height,PATCOPY);
end
else
begin
S:=TmemoryStream.Create;
J:=TJpegImage.Create;
S.Position:=0;
Field.SaveToStream(S);
S.Position:=0;
J.LoadFromStream(S);
Image.Picture.Bitmap.Assign(J);
Result:=S.Size;
J.Free;
S.Free;
end;
end;
fishka (2006-08-15 14:47:00) [8]Romkin © (15.08.06 14:42) [18]
орет TDBImage -телепатирование, возможно, удалось! Проверю вечером.
А как с этим бороться?
Romkin (2006-08-15 14:42:00) [9]fishka (15.08.06 14:37) [17] А при чем здесь база? Ей совершенно все равно, что у нее в BLOB записано, понимаешь?
Я, конечно, потелепаю: орет TDBImage, который ты прицепил к этому полю.
Ошибка-то именно в том, что jpg кто-то пытается прочитать как bmp. А это может делать только какой-то компонент.
fishka (2006-08-15 14:37:00) [10]Romkin © (15.08.06 12:47) [14]
База какая? У меня InterBase 5.6
Desdechado © (15.08.06 13:00) [15]
Через Insert (Update) мне не надо. Через IBTable желательно. Это так сделано в предыдущем проекте. (Это диплом, а не реальная жизнь), поэтому пытаюсь взять из примера по ссылке.
sniknik © (15.08.06 13:14) [16]
Сейчас нет последнего варианта программы. Предоставлю весь текст сегодня ночью или завтра утром.
Почему BMP записывается в таблицу и отображается без проблем?Файл с картинкой выбирается в диалоге.
sniknik (2006-08-15 13:14:00) [11]> Что здесь непонятно?
понятно все! а именно то, что ты попросту вреш...
посмотрим на приведенный пример из сылки (значимая часть, где "ошибка" )
var
Stream: TStream;
begin
Result := False;
if not Field.isNULL then
begin
Stream := TMemoryStream.Create;
try
Field.SaveToStream(Stream); <<<<-------
....
что видим? запись из поля в нетипизированных поток, т.е. ему абсолютно пофигу какие данные в него пишутся, он просто не знает что такое конкретный тип, у него все, хоть Монна Лиза картинкой, том Ленина текстом, ... это набор байт.
и приводится ошибка
> Bitmap Image is not valid.
??? оба на, ошибка то, о том, что Bitmap (которого вообще тут нет, в этом коде) не распознал записанные данные как изображение...
вывод? ну, или обьявили конкурс "кто лучше соврет и тем не менее получит правильный ответ", или у тебя всетаки не тот код, что в ссылке, и ошибка не там, а на "исковерканном" тобой варианте, который ты скрываеш...
> Я не умею задавать вопросы?????????
для тебя это новость?
Desdechado (2006-08-15 13:00:00) [12]> Я не умею задавать вопросы?????????
Нет. И решать их - тоже. За 5 дней ни на йоту не продвинулся...
Хотя я даже на этом форуме регулярно раз в неделю даю код:
Query1.Sql.Text :=
'INSERT INTO testblob ' +
' ( ' +
' fBlob' +
' )' +
' VALUES' +
' (' +
' :ParamBlobField' +
')';
Query1.ParamByName('ParamBlobField').DataType := ftBlob;
Query1.ParamByName('ParamBlobField').ParamType := ptInput;
Query1.ParamByName('ParamBlobField').LoadFromFile('MyFile',ftBlob);
Query1.ExecSql;
Немного не то, но вполне нормальный путь для экспериментов.
А ты не удосужился не только не поискать, а еще и удивиться, что тебе не помогают. Это только младенцев с ложки кормят. А взрослых лодырей пинком под зад обычно...
Romkin (2006-08-15 12:47:00) [13]А у меня все работает. Странно, правда?
fishka (2006-08-15 12:43:00) [14]Fishka (11.08.06 16:54) [7]
Если все взять из примера (из ссылки), то вылетает на строке:
Field.SaveToStream(Stream);
ошибка:
Bitmap Image is not valid.
Что здесь непонятно? На записи вываливается, текст ошибки приведен.
Я не умею задавать вопросы?????????
Desdechado (2006-08-15 11:13:00) [15]И что делал еще?
Ты хоть локализовал причину - это проблема записи или проблема отображения? Ошибки появляются? Текст ошибок, текст попыток...
http://www.ln.ua/~openxs/articles/smart-questions-ru.html
fishka (2006-08-15 09:43:00) [16]JPG так и не получается записать.
Fishka (2006-08-11 18:15:00) [17]Stream - тип у него какой?
TStream;
Fishka (2006-08-11 18:14:00) [18]Все взято из ссылки:
http://forum.sources.ru/index.php?showtopic=148297
Desdechado (2006-08-11 17:14:00) [19]> Bitmap Image is not valid.
Попытка показать JPEG в TBitmap или на кнопку тиснуть...
К сохранению в БД отношения не имеет.
Stream - тип у него какой?
Fishka (2006-08-11 16:54:00) [20]Если все взять из примера (из ссылки), то вылетает на строке:
Field.SaveToStream(Stream);
ошибка:
Bitmap Image is not valid.
Если брать BMP, то ошибки нет. Если jpg, то вылетает на вышеуказанной ошибке и (видимо) не пишется в поле таблицы area
(создано так
IBQuery1.SQL.Add('area BLOB SUB_TYPE -1,');
или так:
IBQuery1.SQL.Add('area BLOB,'); )
В чем ошибка?