Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

Не могу записать в InterBase JPG (c BMP - нормально)   Найти похожие ветки 

 
fishka   (2006-08-09 11:50) [0]

Вот кусочек программы, который работает если информацию брать из BMP:
IBTable3.Edit;
  (IBTable3.FieldByName("area") as TBlobField).LoadFromStream(FS);
  IBTable3.Post;


Что надо изменить, чтобы можно было использовать файлы типа JPG?


 
DrPass ©   (2006-08-09 11:58) [1]

Этот код работает нормально с любым типом данных в потоке. Ошибка где-то в ином месте


 
Desdechado ©   (2006-08-09 12:01) [2]

Есть подозрение, что ты просто потом не можешь показать то, что сохранил. Но это из другой оперы, из поддержки в Image и DBImage сторонних форматов.


 
Romkin ©   (2006-08-09 12:02) [3]

http://forum.sources.ru/index.php?showtopic=148297


 
fishka   (2006-08-09 12:38) [4]

ты просто потом не можешь показать то, что сохранил - Скорее всего это так.
Спасибо всем! Воспользуюсь ссылкой.


 
Desdechado ©   (2006-08-09 13:05) [5]

Romkin ©   (09.08.06 12:02) [3]
Я обычно явно сохраняю тип в отдельном поле, тогда не нужно гадать по сигнатурам, что зарыто в блобе.


 
Romkin ©   (2006-08-09 13:37) [6]

Desdechado ©   (09.08.06 13:05) [5] Зато сигнатуры позволяют точно установить, что это. Это же не обязательно в поле может лежать. Просто поток...
Да и надежнее как-то, мало ли какое рассогласование может случиться.


 
Fishka   (2006-08-11 16:54) [7]

Если все взять из примера (из ссылки), то вылетает на строке:
Field.SaveToStream(Stream);
ошибка:
Bitmap Image is not valid.

Если брать BMP, то ошибки нет. Если jpg, то вылетает на вышеуказанной ошибке и (видимо) не пишется в поле таблицы area
(создано так
IBQuery1.SQL.Add("area BLOB SUB_TYPE -1,");
или так:
IBQuery1.SQL.Add("area BLOB,"); )

В чем ошибка?


 
Desdechado ©   (2006-08-11 17:14) [8]

> Bitmap Image is not valid.
Попытка показать JPEG в TBitmap или на кнопку тиснуть...
К сохранению в БД отношения не имеет.

Stream - тип у него какой?


 
Fishka   (2006-08-11 18:14) [9]

Все взято из ссылки:

http://forum.sources.ru/index.php?showtopic=148297


 
Fishka   (2006-08-11 18:15) [10]

Stream - тип у него какой?
TStream;


 
fishka   (2006-08-15 09:43) [11]

JPG так и не получается записать.


 
Desdechado ©   (2006-08-15 11:13) [12]

И что делал еще?
Ты хоть локализовал причину - это проблема записи или проблема отображения? Ошибки появляются? Текст ошибок, текст попыток...
http://www.ln.ua/~openxs/articles/smart-questions-ru.html


 
fishka   (2006-08-15 12:43) [13]

Fishka   (11.08.06 16:54) [7]
Если все взять из примера (из ссылки), то вылетает на строке:
Field.SaveToStream(Stream);
ошибка:
Bitmap Image is not valid.

Что здесь непонятно? На записи вываливается, текст ошибки приведен.
Я не умею задавать вопросы?????????


 
Romkin ©   (2006-08-15 12:47) [14]

А у меня все работает. Странно, правда?


 
Desdechado ©   (2006-08-15 13:00) [15]

> Я не умею задавать вопросы?????????
Нет. И решать их - тоже. За 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;

Немного не то, но вполне нормальный путь для экспериментов.
А ты не удосужился не только не поискать, а еще и удивиться, что тебе не помогают. Это только младенцев с ложки кормят. А взрослых лодырей пинком под зад обычно...


 
sniknik ©   (2006-08-15 13:14) [16]

> Что здесь непонятно?
понятно все! а именно то, что ты попросту вреш...
посмотрим на приведенный пример из сылки (значимая часть, где "ошибка" )  
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 (которого вообще тут нет, в этом коде) не распознал записанные данные как изображение...

вывод? ну, или обьявили конкурс "кто лучше соврет и тем не менее получит правильный ответ", или у тебя всетаки не тот код, что в ссылке, и ошибка не там, а на "исковерканном" тобой варианте, который ты скрываеш...

> Я не умею задавать вопросы?????????
для тебя это новость?


 
fishka   (2006-08-15 14:37) [17]

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 записывается в таблицу и отображается без проблем? Файл с картинкой выбирается в диалоге.


 
Romkin ©   (2006-08-15 14:42) [18]

fishka   (15.08.06 14:37) [17] А при чем здесь база? Ей совершенно все равно, что у нее в BLOB записано, понимаешь?
Я, конечно, потелепаю: орет TDBImage, который ты прицепил к этому полю.
Ошибка-то именно в том, что jpg кто-то пытается прочитать как bmp. А это может делать только какой-то компонент.


 
fishka   (2006-08-15 14:47) [19]

Romkin ©   (15.08.06 14:42) [18]
орет TDBImage -телепатирование, возможно, удалось! Проверю вечером.
А как с этим бороться?


 
Stanislav ©   (2006-08-15 14:50) [20]

Тебе нужно положить на форму просто 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;


 
Romkin ©   (2006-08-15 15:00) [21]

А посмотреть по ссылке пример использования?
А именно строчку
LoadPictureFromBLOB(img1.Picture, Dataset.FieldByName("PICTURE") as TBLOBField);
???
Читать надо все, что написано, а не просто копипастить


 
fishka   (2006-08-15 15:02) [22]

Да, как все у меня запущено..........
Что за зверь patBlt ?


 
Stanislav ©   (2006-08-15 15:16) [23]

fishka   (15.08.06 15:02) [22]

Windows.patblt
Это помоему закраска, в однотонный цвет если нет фотки.
А вызывать нужно на AfterScroll запроса.

Вообще я ее давно не использую с тех пор как установил себе cxLib, там это все решено.


 
fishka   (2006-08-17 09:57) [24]

sniknik ©   (15.08.06 13:14) [16]
понятно все! а именно то, что ты попросту вреш...

Проблема была в TDBImage. И вылетало именно на указанной строке.
В чем же была моя ложь?

Romkin ©   (15.08.06 14:42) [18]
Спасибо за "телепатию".

Проблема решилась по JPG.
Надо еще gif записать попробовать.......


 
Desdechado ©   (2006-08-17 11:21) [25]

> Проблема была в TDBImage.
О чем я тебе еще в [8] неделю назад сказал.


 
sniknik ©   (2006-08-17 15:37) [26]

> Проблема была в TDBImage. И вылетало именно на указанной строке.
> В чем же была моя ложь?
а в [16] не понятно написано в чем? и это кстати подтвердилось... TDBImage там не участвует.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.039 c
2-1159297596
oRion_rz
2006-09-26 23:06
2006.10.15
Блокировка


1-1157537466
SkyN
2006-09-06 14:11
2006.10.15
Как юзать тип MAP из C++,нужно для импорта функции из другой прог


2-1159181038
йцукен
2006-09-25 14:43
2006.10.15
Динамическое создание PopupMenu


15-1158668300
jack128
2006-09-19 16:18
2006.10.15
Ахиллес и Черепаха


15-1158676295
Unknown user
2006-09-19 18:31
2006.10.15
Интерполяция/аппроксимация алгоритмы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский