Конференция "Базы" » как сохранить картинку в файл [D7, свой тип]
 
  • v1keeee (25.12.08 21:26) [0]
    Здравствуйте! Помогите пожалуста в вопросе: я пишу программку типа базы данных для хранения и обработки данных использую записть типа

    type
     Info = record
        FIO : char[10];
        ... {еще данные}
        foto: char[256]; // <---- вот тут вопрос {не знаю что делать}


    вопрос: как сохранить картинку jpg формата в базу данных (файл типа text или byte) чтобы потом прочитать из этой базы методом BlockRead еще и картинку которую сохранил вместе с основными данными?

    P.S. Может как нить представить картинку в виде последовательности байт и записывать? только я не знаю как :(
  • Правильный$Вася (25.12.08 21:33) [1]

    > Может как нить представить картинку в виде последовательности байт

    она такая и есть
    SaveToStream
  • v1keeee (25.12.08 21:38) [2]

    > она такая и естьSaveToStream

    Извеняюсь если чегото может недопонимаю.. а у какого свойства вызывать этот метод? У image1.picture "SaveToStream" нету :( просто у image1 тоже нету
  • v1keeee (25.12.08 21:47) [3]
    Еще вот наблюдаю такое: если на компоненте image c загруженной в нем картинкой щелкнуть правой кнопкой мыши и выбрать пункт View as Text
    то появляется вот это:

    object Image1: TImage
       Left = 16
       Top = 8
       Width = 297
       Height = 286
       Picture.Data = {0A544A504547496D61676511730000F
                           .....
        325D8614C2FF000747F3F0EEBFF003
        000000050012010300010000000100}

       end


    получается что в свойстве Picture.Data содержится представление картинки в виде последовательности байт? каким образом это можно получить в переменную типа char или byte чтобы сохранить в файле и потом прочитать с другими данными?
  • Johnmen © (25.12.08 22:00) [4]
    SaveToFile+F1 для TGraphic, TBitmap, TIcon и примеры есть...
  • v1keeee (25.12.08 22:09) [5]

    > SaveToFile+F1 для TGraphic, TBitmap, TIcon и примеры есть.
    > ..

    пардон, не понял...
    Мне нужно записывать функцией BlockWrite запись содержащую поле в виде картинки jpg формата в файл...
  • Johnmen © (25.12.08 22:14) [6]
    Да какая разница, что за данные в записи??? Пиши БлокРайтом и всё...
  • Правильный$Вася (25.12.08 22:22) [7]

    > Да какая разница, что за данные в записи??? Пиши БлокРайтом
    > и всё...

    разница есть
    блоки фиксированной длины, а файлы - произвольной
    поэтому сохранить запись в поток, в уж потом блокрайтом
  • Johnmen © (25.12.08 22:25) [8]

    > блоки фиксированной длины

    И что? Это чему-то мешает?
  • v1keeee (25.12.08 22:29) [9]

    > поэтому сохранить запись в поток, в уж потом блокрайтом

    щас буду пробовать ^-^
  • Johnmen © (25.12.08 22:31) [10]

    > щас буду пробовать ^-^

    Чушь пробованию не поддается. Это так, к слову...
  • v1keeee (25.12.08 22:31) [11]
    а какого типа stream создовать чтобы picture.graphic туда засунуть? TMemoryStream или какой?
  • Сергей М. © (26.12.08 08:46) [12]
    TMemoryStream (если картинка сравнительно небольшая) или TFileStream (для картинки произвольного размера)
  • Сергей М. © (26.12.08 08:48) [13]

    > типа базы данных для хранения и обработки
    > данных использую записть типа


    Все уже до тебя написано, осталось только воспользоваться готовым - см. TClientDataSet
  • v1keeee (26.12.08 09:33) [14]

    > TMemoryStream (если картинка сравнительно небольшая) или
    > TFileStream (для картинки произвольного размера)

    спасиба
  • Виталий Панасенко (26.12.08 10:36) [15]
    я бы рекомендовал использовать нетипированный файл... записать заголовок(Info=record), далее размер данных картинки и собственно данные
  • v1keeee (26.12.08 11:38) [16]

    > я бы рекомендовал использовать нетипированный файл... записать
    > заголовок(Info=record), далее размер данных картинки и собственно
    > данные

    вот терь я сам понял чего хотел ))


    >  и собственно данные

    а данные получить из потока так получается?
  • Виталий Панасенко (26.12.08 12:47) [17]
    BlockWrite/BlockRead с потоками не работает, насколько я знаю
 
Конференция "Базы" » как сохранить картинку в файл [D7, свой тип]
Есть новые Нет новых   [134477   +39][b:0.001][p:0.002]