Текущий архив: 2004.11.28;
Скачать: CL | DM;
ВнизХранение изображений. Найти похожие ветки
← →
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 вся ветка
Текущий архив: 2004.11.28;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.033 c