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

Вниз

Хранение изображений.   Найти похожие ветки 

 
widoms   (2004-08-26 09:54) [0]

Хочу написать программу что типа фотоальбома lдля хранения изображений bmp,jpg.и.т.д, коментарии к изображениям.
Подскажите в чем лучше хранить изображения ?
Думаю в DB в Blob полях ???
Или можно подругому ?


 
WondeRu ©   (2004-08-26 10:22) [1]

widoms   (26.08.04 9:54)
Думаю в DB в Blob полях ???

это конечно здорово, но в базе лучше хранить пути к файлам! А для файлов - отдельная папка!


 
Vitalik ©   (2004-08-26 10:51) [2]


> это конечно здорово, но в базе лучше хранить пути к файлам!
> А для файлов - отдельная папка!

А я бы тогда вообще не стал с БД связываться... Пути к файлам и комментарии можно и в текстовых файлах хранить... или в ini...


 
WondeRu ©   (2004-08-26 11:17) [3]

Vitalik ©   (26.08.04 10:51) [2]
я БД везде пользую, где только можно! тока если приложние маленькое, то связку Access + ADO + Jet Driver!


 
widoms   (2004-08-26 11:18) [4]

хм... в DB было бы наверное проще, я пробовал но 50 фотографий уже медленно выводятся особенно BMP.
а если фотографии разбиты по группам...можно было бы связанную таблицу сделать.


 
WondeRu ©   (2004-08-26 11:36) [5]

widoms   (26.08.04 11:18) [4]
можно было бы связанную таблицу сделать.

делай! тока фотки в файлах храни, а не в БД


 
widoms   (2004-08-26 11:44) [6]

Т.е пути и коментарии хранить в БД ?
А как свзять изображения с БД я что то немного не догоняю.
Мне кажется лажа получится....


 
[lamer]Barmaglot ©   (2004-08-26 14:25) [7]

Маньяки!!! Нафига БД? Я бы такую программу выкинул сразу, которая для хранения файлов использует базу данных... Проще и надежнее слепливать изображения в один файл, а в ини-шке хранить позицию с которой начинается следующее изображение и ВСЕ... Зачем лишний расход ресурсов? Кроме того такую программу вообще лучше делать на WinAPI чтобы она занимала мало места...


 
WondeRu ©   (2004-08-26 16:26) [8]

[lamer]Barmaglot ©   (26.08.04 14:25) [7]
Маньяки!!!

каждый имеет право на извращение!) Мне ,предположим, легче с БД работать чем с файлами!


 
widoms   (2004-08-27 03:46) [9]

Изображения склеивать в один файл ?
Да ты крут. Ну а к примеру если мне надо удалить изображение или перенести в другую группу ?


 
Submarine   (2004-08-27 09:44) [10]

Лучше использовать БД, я использую Interbase, и храню картинки в Blob-полях, очень удобно, вот код:
unit Main;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 DBTables, Db, StdCtrls, Buttons, ExtCtrls, DBCtrls, Grids, DBGrids,
 RXDBCtrl, jpeg, Placemnt;

type
 TForm1 = class(TForm)
   RxDBGrid1: TRxDBGrid;
   DBNavigator1: TDBNavigator;
   BitBtn1: TBitBtn;
   BitBtn2: TBitBtn;
   scrImage: TDataSource;
   qryImage: TQuery;
   DB_IMAGE: TDatabase;
   updtImage: TUpdateSQL;
   OpenDialog1: TOpenDialog;
   qryImageOBJECTID: TIntegerField;
   qryImageIMAGE_FILESNAME: TStringField;
   qryImageIMAGE_FILES: TBlobField;
   FormStorage1: TFormStorage;
   Image1: TImage;
   procedure FormCreate(Sender: TObject);
   procedure qryImageAfterDelete(DataSet: TDataSet);
   procedure qryImageAfterPost(DataSet: TDataSet);
   procedure BitBtn1Click(Sender: TObject);
   procedure RxDBGrid1DblClick(Sender: TObject);
   procedure BitBtn2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 JpegIm: TJpegImage;
 bm: TBitMap;

implementation
   uses  shellapi, comobj;
{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
QryImage.open;
end;

procedure TForm1.qryImageAfterDelete(DataSet: TDataSet);
begin
try
// Base - имя базы
 db_Image.applyUpdates([TDBDataSet(DataSet)]);
 except
   ShowMessage("Не удается сохранить изменения на сервере. "+
     "Проверьте данные или обратитесь к администратору базы данных");
   TDBDataSet(DataSet).CancelUpdates;
 end;//try
end;

procedure TForm1.qryImageAfterPost(DataSet: TDataSet);
var DS: TDBDataSet;
begin  with DataSet as TQuery do
  DS := TDBDataSet(DataSet);
 try
   db_Image.ApplyUpdates([DS]);
 except
   ShowMessage("Не удается сохранить изменения на сервере. "+
     "Проверьте данные или обратитесь к администратору базы данных");
   DS.CancelUpdates;
 end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if OpenDialog1.Execute = false then Exit;
   if qryImage.Active then begin
   qryImage.Edit;
   qryImageIMAGE_FILES.LoadFromFile(OpenDialog1.FileName);
    qryImageImage_FilesNAME.Value:=IntToStr(qryIMAGEObjectid.value);
    qryImage.Post;
//   DeleteFile(st);
  qryImage.close;
  qryImage.open;
end;
  end;

procedure TForm1.RxDBGrid1DblClick(Sender: TObject);
begin
  if OpenDialog1.Execute = false then Exit;
   if qryImage.Active then begin
   qryImage.Edit;
   qryImageIMAGE_FILES.LoadFromFile(OpenDialog1.FileName);
    qryImageImage_FilesNAME.Value:=IntToStr(qryIMAGEObjectid.value);
    qryImage.Post;
//   DeleteFile(st);
  qryImage.close;
  qryImage.open;
end;
  end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
 MS: TMemoryStream;

begin
 try
     MS := TMemoryStream.Create;
   qryImageImage_files.SaveToStream(ms);
   Image1.Picture.Bitmap.LoadFromStream(ms);
{ bm := TBitMap.Create;
 JpegIm := TJpegImage.Create;
 JpegIm.LoadFromStream(MS);
 bm.Assign(JpegIm);
 Form1.Canvas.Draw(0, 0, bm);
 bm.Destroy;
 JpegIm.Destroy; }
 finally
   MS.Free;
 end;
end;

end.
Что непонятно, пиши на мыло ...


 
Submarine   (2004-08-27 09:47) [11]

Блин, забыл qryImage - это query запрос, вместо rxDBGrid легко можно использовать обычный DBGrid


 
WondeRu ©   (2004-08-27 10:05) [12]

Submarine   (27.08.04 9:47) [11]
все конечно замечательно, но по моему горькому опыту (FireBird), если дохнет база, то и картинки соответственно тоже((( Так что есть риск, но есть и удобства! хотя можно и бэк-апы базы делать по расписанию!


 
widoms   (2004-08-27 10:17) [13]

Хорошо спасибо всем за советы,
а как лучше Эскизы фотографий вывести на экран уменьшенные ?
Как в проводнике например.
Использовал DBCtrlGrid но медленно выводится слишком, при совсем небольшой базе.


 
Submarine   (2004-08-27 10:20) [14]

>WondeRu ©  
С Interbase работаю более 3 лет, не разу не дохла, зря на это катить....


 
[lamer]Barmaglot ©   (2004-08-27 10:36) [15]

то widoms   (27.08.04 03:46) [9]

>Изображения склеивать в один файл ?
>Да ты крут. Ну а к примеру если мне надо удалить изображение
> или перенести в другую группу ?

Так в чем проблема? У тебя перед любой картинкой все равно должен быть заголовок (ну для комментариев, указания группы, названия изображения, ссылки на следующее изображение и т.д.) Для удаления изображения действуй как и в базах данных, ставь boolean"овский тип есть/нет, а иногда когда количество удаленных файлов превысит скажем 30% удаляй их из файла реально. Перенести в другую группу еще проще заменить один интегеровый тип в файле с одного числа на другой ( надеюсь 2 милиарда групп тебе хватит?).

>каждый имеет право на извращение!) Мне ,предположим, легче с БД
> работать чем с файлами!

Право-то ты имеешь, но толку от такой программы никакого, получится как с автосхемой у DmitryO. Вроде работал долго и идея хорошая, но вот показать никому нельзя, так как покажешь - будут смеяться...

p.s. программа должна использовать МИНИМУМ ресурсов, наличие базы данных в данном случае бестолковое расходование ресурсов.


 
WondeRu ©   (2004-08-27 10:50) [16]

widoms   (27.08.04 10:17) [13]
сам рисуй! ф-я StretchBlt


 
WondeRu ©   (2004-08-27 10:59) [17]

Submarine   (27.08.04 10:20) [14]
С Interbase работаю более 3 лет, не разу не дохла, зря на это катить....


дохнет еще как, особенно в режиме 24*7, правда в 90% случаев можно восстановить!

[lamer]Barmaglot ©   (27.08.04 10:36) [15]
наличие базы данных в данном случае бестолковое расходование ресурсов

смотря что за альбом он хочет сделать! А если на >10000 фоток?

А Автошему не трогай - эта прога преобрела статус святой! ;-)


 
[lamer]Barmaglot ©   (2004-08-27 11:25) [18]

то WondeRu ©   (27.08.04 10:59) [17]

>смотря что за альбом он хочет сделать! А если на >10000 фоток?

Представляю как будет тормозить база данных с таким количеством фотографий... А с файлами проще, поставил ограничение, скажем если превышает 500Мб, то делать следующий файл... Но главное такая программа (при правильной реализации) будет работать ОЧЕНЬ быстро в отличие от базы данных...И ей не будут страшны никакие падения (ну если винт конечно не полетит)


 
WondeRu ©   (2004-08-27 12:07) [19]

[lamer]Barmaglot ©   (27.08.04 11:25) [18]
повторяю еще раз!!! все данные (комментарии, ссылки на звуковые файлы и т.п.) о фотках хранятся в базе, а сами картинки в виде отдельных файлов!


 
wholenado ©   (2004-08-27 12:43) [20]

А зачем собственно в базе хранить всю ету тремутень....А вдруг собъется или еще что-нибудь....лучше в базе хранить предпросмотры "Thumbnail" а можно и вовсе без них...
JPEG формат позволяет включать блоки комментариев...EXIF - так ето вообще кладезь туда много пользовательской инфы запихнуть....последняя реализация BMP тоже позволяет это делать...
Не стреляйте из пушки по воробьям...а?



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

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

Наверх





Память: 0.51 MB
Время: 0.036 c
1-1100291712
Dmitry
2004-11-12 23:35
2004.11.28
Отловить закрытие процесса


14-1100174179
Карелин Артем
2004-11-11 14:56
2004.11.28
Как по закону перевести клиента с одной программы на другую?


4-1097648493
Woolen
2004-10-13 10:21
2004.11.28
Как загрузить файл exe в память полностью?


1-1100114788
Cardinal
2004-11-10 22:26
2004.11.28
Работа с потоками. Помогите!


14-1098783528
Беспечный_Ангел
2004-10-26 13:38
2004.11.28
Я в шоке! Чему в школе учат???





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский