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

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

Не могу записать в InterBase JPG (c BMP - нормально) [D5, IB5.x]


Страницы:   1 2

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,'); )

В чем ошибка?


Страницы:   1 2

Наверх

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