сделать превьюшки для всех картинок, лежащих на серваке

natalie

Новичок
сделать превьюшки для всех картинок, лежащих на серваке

Здравствуйте,

у меня такая проблема:

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

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

а то у меня галеррея тормозит жутко... еще бы! в общем тупо был сделан скрипт - нужно исправлять ошибки.

спасибо
 

zerkms

TDD infected
Команда форума
ясно, что при загрузке картинок на сервак нужно просто добавить скрипт, который тут же генерил бы маленькую превьюшку для каждой фотки, ее и отображать в галерее, но что делать с уже существующими сотнями папок с тысячами фоток?
взять тот же самый скрипт и дать ему на вход уже залитые картинки
 

natalie

Новичок
я это вижу так:

- сделать большой select из базы id папок
- все обойти, для каждой фотки сделать preview

по идее это будет отдельный php файл и этот php файл будет запущен только один раз, верно?

добавить генерацию превьюшки при аплоаде в основной скрипт, и везде в основном скрипте, показать, что в галерее нужно превьюшки отображать... вроде все.
 

tf

крылья рулят
- нужно обойти все папки и понаделать превьюшек для всех этих фоток, сложив превьюшки туда же и назвать их small_имяфотки.jpg
ты уже написал ответ
 

MiRacLe

просто Чудо
#!/bin/sh
ROOTDIR="/home/domain.tld/public_html/images/"
for fldr in `find $ROOTDIR -type d`; #берём все папки
do
chdir $fldr; #заходим в каждую
for f in `ls *.jpg 2>/dev/null`; #берём все jpg-файлы (ошибки а-ля файл не найден распыляем на ионы пропан-бутана)
do
convert $f -resize 400x300 small_$f; #c помощью imagemagick уменьшаем их
done;
done;

-~{}~ 25.11.06 15:50:

другой способ, не требующий shell-доступа.

пишем в html-е src картинок как /path/to/small_picture.ext

mod_rewrite-ом
организуем правила
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule small_\.(jpg|png|gif)$ /path/to/imageresizer.php [L]

в imageresizer.php
ищем картинку без small_, ресайзим и сохраняем с требуемым
названием (и заодно выдаем её в output)

Итого - при первом посещении маленькие картинки сгенерятся, но первый посетитель очумеет ждать их загрузки...
 

natalie

Новичок
Спасибо,
MiRacLe

надо только будет к ним imagemagic поставить, я думала уменьшать с gd,

когда писать начну наверно еще много непоняток возникнет...

спасибо!
 
Сверху