[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Фотоальбом
vuzy
Здравствуйте коллеги программисты. У меня задачка есть затруднительная.
Нужно написать фотоальбом. структура БД простенькая.
SQL
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
--
-- Структура таблицы `alboms`
--

CREATE TABLE `alboms` (
`name` varchar(50) NOT NULL,
`id` int(11) NOT NULL auto_increment,
`previev` varchar(50) NOT NULL,
`avtor` varchar(50) NOT NULL,
`time` varchar(17) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ;

--
-- Дамп данных таблицы `alboms`
--

INSERT INTO `alboms` VALUES ('Аська 1', 1, 'img/album/priview/asya.JPG', 'Vuzy', '24-09-2009 16:44');
INSERT INTO `alboms` VALUES ('Аська 2', 2, 'img/album/priview/asya.JPG', 'Vuzy', '24-09-2009 16:44');
INSERT INTO `alboms` VALUES ('Аська 3', 3, 'img/album/priview/asya.JPG', 'vuzy', '');
INSERT INTO `alboms` VALUES ('Аська 4', 4, 'img/album/priview/asya.JPG', 'Vuzy', '');
INSERT INTO `alboms` VALUES ('Аська 5', 5, 'img/album/priview/asya.JPG', 'Vuzy', '');
INSERT INTO `alboms` VALUES ('Аська 6', 6, 'img/album/priview/asya.JPG', 'Vuzy', '');

-- --------------------------------------------------------

--
-- Структура таблицы `photo`
--

CREATE TABLE `photo` (
`id` int(11) NOT NULL auto_increment,
`id_albom` int(11) NOT NULL,
`do` int(11) NOT NULL,
`potom` int(11) NOT NULL,
`priwiew` varchar(100) NOT NULL,
`url` varchar(100) NOT NULL,
`name` varchar(100) NOT NULL,
`avtor` varchar(50) NOT NULL,
`avtor_coment` text NOT NULL,
`time` varchar(17) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ;

--
-- Дамп данных таблицы `photo`
--

INSERT INTO `photo` VALUES (1, 2, 0, 2, 'img/album/priview/asya.JPG', 'img/album/photo/asya.JPG', 'Ася спряталась 1', 'Vuzy', 'ася прячется от камеры', '24-09-2009 17:27');
INSERT INTO `photo` VALUES (2, 2, 1, 3, 'img/album/priview/asya.JPG', 'img/album/photo/asya.JPG', 'ася спряталась 2', 'вузя', 'лялялялял', '24-09-2009 17:27');
INSERT INTO `photo` VALUES (3, 2, 2, 4, 'img/album/priview/asya.JPG', 'img/album/photo/asya.JPG', 'Ася спряталась 3', '111', '111', '');
INSERT INTO `photo` VALUES (4, 2, 3, 5, 'img/album/priview/asya.JPG', 'img/album/photo/asya.JPG', 'ася спряталась 4', '111', '111', '');
INSERT INTO `photo` VALUES (5, 2, 4, 6, 'img/album/priview/asya.JPG', 'img/album/photo/asya.JPG', 'Ася спряталась 5', '111', '111', '');
INSERT INTO `photo` VALUES (6, 2, 5, 0, 'img/album/priview/asya.JPG', 'img/album/photo/asya.JPG', 'ася спряталась 6', '111', '111', '');



Урезал больше некуда.
Сценарии для вывода содержимого тоже простые примерно 5 строк как для альбома в целом так и для фотографии в отдельности.
Но столкнулся со сложностью добавления фотографии таким образом что б. Потом без дополнительного редактирования можно было переходить между фотками в альбоме. Так же проблема в сознании превью картинки и полномасштабной картинки отдельно и в кодировке имени =))
Вообщем помогите советом как лучше реализировать загрузку фото на сервер и добавление ссылок в БД



Спустя 8 часов, 19 минут, 52 секунды (25.09.2009 - 09:00) Dezigo написал(а):
Preview - используй библеотеку GD2. - создавай копии в уменьшеном размере и сылайса на сылку.
для отоброжения используй java script. - переходить по фоткам. (их в инете полно)

алгоритм
лучше так:
предположим я закачиваю фотку с параметрами:
Размер фотки 3000x2000 2.8.mb
слишком большой размер и слишком тяжёлая.
можно это обработать.

закачиваешь фотку в /tmp - и начинаёшь её обрабатывать.
(создаешь две копии фотки)
1. - max 800x600 /images - сама фотка
2. max 150x100 /images_thumb - маленькая копия фотку
закаченую фотку в /tmp удалаяешь после обработки.


Спустя 49 минут, 45 секунд (25.09.2009 - 09:50) Oyeme написал(а):
Зачем ты хоронишь полные путь в базе?

img/album/priview/asya.JPG

храни название изображения ,если пути все одинаковы.

asya.JPG

smile.gif

Спустя 5 часов, 52 минуты, 38 секунд (25.09.2009 - 15:43) vuzy написал(а):
Цитата
Preview - используй библеотеку GD2

Это вы про функцию getimagesize() ?
Я так и не разобрался как она работает.. =)) и можно ли вообще менять размеры с ее помощью.
Цитата
java script. - переходить по фоткам.

Спасибо поищу.

Цитата
Зачем ты хоронишь полные путь в базе?

img/album/priview/asya.JPG

пока незачем в будущем сделаю по другому мне щас надо разобратся с этими основными проблеммами а путь к файлу это минутное дело.

Спустя 3 минуты, 58 секунд (25.09.2009 - 15:47) twin написал(а):
Цитата
пока незачем в будущем сделаю по другому

А вот и неправ. Дело в том, что превью и фулл версию удобно хранить под одинаковыми именами в разных каталогах. А полные пути придется записывать в базу отдельно, либо обрабатывать на выходе

Спустя 13 минут, 12 секунд (25.09.2009 - 16:00) vuzy написал(а):
Цитата (twin @ 25.09.2009 - 12:47)
Цитата
пока незачем в будущем сделаю по другому

А вот и неправ. Дело в том, что превью и фулл версию удобно хранить под одинаковыми именами в разных каталогах. А полные пути придется записывать в базу отдельно, либо обрабатывать на выходе

Я сие предусмотрел. в структуре БД не видно что каталоги priwiew и Album разные для разных изображений.
но на сервере они есть. так же имена у файлов одинаковые. так что на выходе изменить путь к изображению не проблема и при загрузке указать нужный каталог тоже не беда.

Спустя 6 часов, 5 минут, 56 секунд (25.09.2009 - 22:06) hara_ написал(а):
во первых preview

вот вторых раз минутное дело переделать пути, так в чём же дело - какая разница когда потратить эти минуты.

в третьих getimagesize=> get image size => google translate ну и как переводится?
- может эта функция изменять размеры изображения?

вот тут есть ответ http://www.php.net/manual/en/ref.image.php


Спустя 17 часов, 22 минуты, 35 секунд (26.09.2009 - 15:29) sergeiss написал(а):
Цитата (twin @ 25.09.2009 - 16:47)
Дело в том, что превью и фулл версию удобно хранить под одинаковыми именами в разных каталогах.

Может быть это и так, но не совсем понятно - почему?

Спустя 2 часа, 13 минут, 18 секунд (26.09.2009 - 17:42) twin написал(а):
Цитата
Может быть это и так, но не совсем понятно - почему?

Потому что
1. В таблице достаточно одного поля с названием файла. Это к вопросу об избыточности и величине таблицы.
2. Работать гораздо проще с одинаково названными картинками. Сразу видно кто чей превью.

Спустя 8 часов, 16 минут, 56 секунд (27.09.2009 - 01:59) vuzy написал(а):
по поводу реализации перехода по ссылкам..
Я так понял запросом в DB формируются список фотографий входящих в определенный альбом а потом сравнивается id текущей и формируются ссылки на предыдущую и следующую фотографию?
Цитата
Потому что
1. В таблице достаточно одного поля с названием файла. Это к вопросу об избыточности и величине таблицы.
2. Работать гораздо проще с одинаково названными картинками. Сразу видно кто чей превью.

тут Twin прав.=) Я сразу не предусмотрел сей ход но реализировать его не сложно.
Цитата
в третьих getimagesize=> get image size => google translate ну и как переводится?
- может эта функция изменять размеры изображения?

переводится как получить изображение размер - дословно =)) но это единственная функция, которая мне известна, которая хоть как то связана с размерами картинки.

Спустя 6 часов, 22 минуты, 11 секунд (27.09.2009 - 08:21) Kuliev написал(а):
Цитата (twin @ 26.09.2009 - 19:42)
Цитата
Может быть это и так, но не совсем понятно - почему?

Потому что
1. В таблице достаточно одного поля с названием файла. Это к вопросу об избыточности и величине таблицы.
2. Работать гораздо проще с одинаково названными картинками. Сразу видно кто чей превью.

Именно так я и делаю. Очень удобно.

Спустя 24 минуты, 46 секунд (27.09.2009 - 08:46) Sylex написал(а):
Цитата (twin @ 26.09.2009 - 20:42)
1. В таблице достаточно одного поля с названием файла. Это к вопросу об избыточности и величине таблицы.
2. Работать гораздо проще с одинаково названными картинками. Сразу видно кто чей превью.


безусловно smile.gif

Спустя 44 минуты, 15 секунд (27.09.2009 - 09:30) sergeiss написал(а):
Цитата (twin @ 26.09.2009 - 18:42)
Потому что
1. В таблице достаточно одного поля с названием файла. Это к вопросу об избыточности и величине таблицы.
2. Работать гораздо проще с одинаково названными картинками. Сразу видно кто чей превью.

Я почему спросил-то...
Можно же ведь как сделать:
1. Храним все файлы в одном каталоге
2. Основному файлу даем какое-то имя, а превью - то же имя, но с добавкой (например) _preview.
В итоге получаем 2 файла в одном месте: pic23421.jpg и pic23421_preview.jpg.

Примечание: вместо preview можно использовать small и любые другие слова, которые будут понятны не только программеру, но и другим людям.

Кстати. Я это не вот сейчас придумал, а использую уже много лет. Когда фотки обрабатываю, то в одном каталоге пишу и основной файл, и обработанный, и обработанный по-особому как-то, и уменьшенный.... В итоге всё находится в одном месте, и всё видно.

У такого подхода есть свои преимущества wink.gif Одно из которых - если обработанных файлов несколько штук (по разным алгоритмам), то не надо делать кучу каталогов для них. К тому же, для разных файлов может быть разное количество "версий" этого файла, по-разному обработанных.

Спустя 1 час, 18 минут, 10 секунд (27.09.2009 - 10:48) Sylex написал(а):
Цитата (sergeiss @ 27.09.2009 - 12:30)
Кстати. Я это не вот сейчас придумал, а использую уже много лет. Когда фотки обрабатываю, то в одном каталоге пишу и основной файл, и обработанный, и обработанный по-особому как-то, и уменьшенный.... В итоге всё находится в одном месте, и всё видно.


из минусов только - скорость доступа при большом кол-ве файлов, или должна быть иная система распределения файлов wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.