Сейчас будет много технических нюансов, так что людям незаинтересованным можно спокойно пропустить, они ничего не потеряют.
Итак, приложение «
Раздача аватарок» суть фильтр. В базу заносится ссылка на картинку и... В принципе, это самое трудоемкое, что делает приложение. Конечно, перед занесением в базу картинки скрипт ее проверяет на адекватность (размер - не более 1Мб, тип - GIF или JPEG). Остальное делает скрипт, выдающий пользователю картинку.
Ссылка на картинку-аватарку в приложении выглядит так:
http://vexer.ru/liru/liruavs/ссылка_на_картинкуГде
ссылка_на_картинку - ссылка без «httр://»
Таким образом выдающему скрипту передается ссылка на картинку. Скрипт снова проверяет картинку на адекватность, при необходимости пропорционально уменьшает до требуемых 150x150 пикселей (при уменьшении, правда, большие анимированные картинки становятся статичными) и выдает пользователю. В случае неадекватной картинки ссылка на нее стирается из базы, а пользователю показывается надпись «аватарка не найдена». Собственно, это все.
Непосредственно об адекватности картинки скрипт судит по передаваемым метаданным:
PHP:
$fi = fopen($file_name,"r");
$inf = stream_get_meta_data($fi);
fclose($fi);
$size_file=0;
$type_file="";
foreach($inf["wrapper_data"] as $vv) {
if (stristr($vv,"content-length")) {
$v = explode(":",$vv);
$size_file=trim($vv[1]);
}
if (stristr($vv,"content-type")) {
$v = explode(":",$vv);
$type_file=strtolower(trim($vv[1]));
}
}
Собственно непосредственно на сервере, получается, я ничего не храню. Вот такой финт ушами.