powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Где хранить графику?
17 сообщений из 17, страница 1 из 1
Где хранить графику?
    #32333691
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в базе или в отдельной папочке?
если таблица имеет структуру:
идентиф-р, признак1, признак2, ..., фото
причем фото не для каждой записи, примерно 10%
если в папках, то как быть с доступом? там разграничением прав?

помогите, плз, разобраться
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333698
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
файлы jpeg, 200-700 кило
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333699
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше в базе помоему, по крайней мере все довольно просто, проблем доступа нет, "случайно" файл никто не сотрет, и т.д.

Viman
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333713
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как, научите, плз
я тут читала поиск, с jpeg все плохо?
мне ваще надо с нуля
или где почитать?
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333714
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
согласен с viman , хочется лишь добавить, что фотки лучше вынести в отдельную таблицу от основного справочника. Например, в одной таблице у нас список людей, а во второй фотки этих людей, и соответственно ссылочный ключ. Достоинства такого подхода в том что можно оптимизировать базу (зависит от БД) и можно при быстром просмотре не показывать фото не теряя при этом в скорости (как минимум экономим на fetch)
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333730
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абсолютно согласен с StarWind. Сам всегда так и делаю.
Таблички например такие

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE TABLE BLOBS ( 
  ID       NUMBER ( 35 ), 
  DATA     LONG RAW, 
  DELETED  NUMBER ( 1 )    DEFAULT  0 )

CREATE TABLE PEOPLES_CARD ( 
  ID                     NUMBER ( 35 ), 
  NAME                   VARCHAR2 ( 100 ), 
  FIO                    VARCHAR2 ( 100 ), 
  SHORTFIO               VARCHAR2 ( 50 ), 
  DOLG                   NUMBER ( 35 ), 
  ORG                    NUMBER ( 35 ), 
  DATA                   DATE, 
  DELETED                NUMBER ( 1 )    DEFAULT  0 , 
  PIC_FOTO               NUMBER ( 35 ),  -- ссылки на блоб
 
  PIC_INN                NUMBER ( 35 ), 
  PIC_DIPLOM             NUMBER ( 35 ), 
  PIC_DIPLOM_PRIL        NUMBER ( 35 ), 
  PIC_PASSPORT           NUMBER ( 35 ), 
  PIC_PENSION            NUMBER ( 35 )
)


вот так можно сохранить в блоб

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
var  MS : TMemoryStream;
      ms:=TMemoryStream.Create;
      ms.LoadFromFile(fopeopleedit.OpenDialog1.FileName);
      ms.Seek( 0 , soFromBeginning);
      TBlobField(fomain.sqBlobs.FieldByName('data')).loadfromstream(mS);
      ms.Destroy;
      fomain.sqblobs.post;


вот так загрузить (тут не совсем правильно, лучше не через файл сделать, а все операции проделать в памяти, но я не стал заморачиваться)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
var  MS : TMemoryStream;
        TBlobField(fomain.sqBlobs.fieldByName('data')).SaveToStream(mS);
        ms.Seek( 0 , soFromBeginning);
        s:=apl_path+'\temp\~temp'+inttostr(random( 1000000 ))+'.jpg';
        ms.SaveToFile(s);
        image1.Picture.LoadFromFile(s);
        deletefile(s);


Viman
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333733
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если непонятно будет пиши на мыло или в аську.

Viman
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333743
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viman, спасибо
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333745
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и Starwind
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333871
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот например загрузка jpg картинки с базы через потоки (Stream)

Код: plaintext
1.
2.
3.
 BLOB := DataSet.CreateBlobStream(Dataset.FieldByName('Photo'),bmRead);
 try if BLOB.Size <>  0  then Photo.Picture.Graphic.LoadFromStream(BLOB)
     else Photo.Picture.Graphic.LoadFromFile(GrphcPath+'DefPhoto.jpg');
 finally BLOB.Free; end;
...
Рейтинг: 0 / 0
Где хранить графику?
    #32333874
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
...
Рейтинг: 0 / 0
Где хранить графику?
    #32334789
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarWind
Photo.Picture.Graphic.LoadFromStream(BLOB)
вот здесь у меня ошибка eaccessviolation
в блобом, скорее, нормально, т.к. размер определяется правильно (он = размеру файла-эт правильно?)

что делать? :(
...
Рейтинг: 0 / 0
Где хранить графику?
    #32334794
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гы, вобщем у тебя не создан объект Photo.Picture.Graphic
я при крейте формы делал операцию

Photo.Picture.Graphic := TJpegImage.Create;
...
Рейтинг: 0 / 0
Где хранить графику?
    #32334796
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нормально... :(
я думала, можно грузить в timage
а че, надо обязательно в TJpegImage?
...
Рейтинг: 0 / 0
Где хранить графику?
    #32334830
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не визуально будет грузится в TImage но абы она могла работать необходима та строка что я написал и все... тобишь у Image будет объект для того чтоб работать с jpg. Кстате, необходимо объявить в секции uses модуль jpeg
...
Рейтинг: 0 / 0
Где хранить графику?
    #32334872
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда почему все грузится\выгружается из БД в timage нормально?
...
Рейтинг: 0 / 0
Где хранить графику?
    #32335008
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так причем тут БД если проблемы с отображением? Для базы это просто поток ничего не значащих битов
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Где хранить графику?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]