Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.22 »   Обработка [ img ] при загрузке
RSS

Обработка [ img ] при загрузке

Хочется, чтобы было красиво

Текущий рейтинг темы: Нет
Выводить сообщения

<<Назад  Вперед>>Страницы: 1 2
Модераторы: aerograf, wsx
Печать
 
mickle
Новичок


Всего сообщений: 16
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
4 нояб. 2009
Хочется сделать так:
При записи нового поста, если встречается тэг [ img ]:
- происходит проверка размеров картинки
- если картинка большая (например, больше $GLOBALS[ 'opt_previewx' ] по ширине, и аналогично по высоте), то
- делается thumb, записывается в директорию картинок
- вместо первоначальной картинки прописывается этот thumb, обернутый в ссылку на исходную картнику

Помогите, люди добрые!
Или подскажите, где копать!
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003
Я бы не советовал подобное делать. Представьте очень простую ситуацию: человек постит сообщение с тремы тегами [ img ], в каждом из которых большие тяжелые фотографии. Теперь что будет происходить по нажатию кнопки "Отправить". Сервер проходит по сообщению, находит первый тег, выбирает адрес картинки, пытается загрузить её к себе, после загрузки пытается её уменьшить. На всё это уходит время и оперативная память. Дальше по следующему тегу. Всё это время пользователь ждет, пока запостится сообщение. Прибавьте сюда небольшую скорость соединения, слабенький сервер, тормозной mysql. В итоге мы получаем загрузку страницы в лучшем случае около минуты. Да ваш сервер таким образом положить как нечего делать.
mickle
Новичок


Всего сообщений: 16
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
4 нояб. 2009
А что будет сейчас в этом случае?
Писатель спокойно запостит 3 тяжелые простыни, а потом все открывающие этот тред будут ждать их загрузки. И наблюдать разорванный дизайн.
Уж лучше пусть писатель один раз подождет во время постинга.
А сервак это не должно повесить - обрабатывается только одна сессия (постящий - один), и картинки обрабатываются по очереди.

UPD: Могу запостить простыни сюда, для наглядности, если надо.
mickle
Новичок


Всего сообщений: 16
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
4 нояб. 2009
Пока сделал временное решение - thumb не создается, просто уменьшается отображаемая картинка с помощью width= height=

файл process.php:
[b]1. в начале добавить:[/b]

function check_img2($imgtext) {

$imgsrc=preg_replace("/\<img src=\"(.+?)\"(.+)/is","$1",$imgtext);

$size = getimagesize($imgsrc);
$maxx=$GLOBALS['opt_previewx'];
$maxy=$GLOBALS['opt_previewy'];

if ($size[0]>$maxx) {
$k=$maxx/$size[0];
$w=round($size[0]*$k);
$h=round($size[1]*$k);
$imgtext=preg_replace("/\<img src=\"(.+?)\"(.+)/is","<img src=\"$1\" width=$w height=$h $2",$imgtext);
} elseif ($size[1]>$maxy) {
$k=$maxy/$size[1];
$w=round($size[0]*$k);
$h=round($size[1]*$k);
$imgtext=preg_replace("/\<img src=\"(.+?)\"(.+)/is","<img src=\"$1\" width=$w height=$h $2",$imgtext);
}
else {
$imgtext="[img]".$imgsrc."[/img]";
}

return $imgtext;

}

[b]2. Дописать в функции do_process_post($topic,$newtopic=0) {[/b]

function do_process_post($topic,$newtopic=0) {
...
$sqldata.=check_post_params();

//начало вставки
$text = preg_replace("/\[img\](.+?)\[\/img\]/is","<img src=\"$1\" alt=\"\">",$text);
$text = preg_replace("/\[img=(.+?)\]/is","<img src=\"$1\" alt=\"\" name=\"itag\">",$text);
$text = preg_replace("/(<img .*?>)/ise","check_img2(\"$1\")",$text);
//конец вставки

$sql = "INSERT INTO ".$GLOBALS['DBprefix']."Post SET p_text=\"".db_slashes($text)."\", $sqldata";
$res =&db_query($sql,$link);
...

Но это работает только с включенным html

А вот thumb-ы мне сложновато самотоятельно сделать.
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003
у меня на этот случай сделаны спойлеры. либо сам пользователь, либо модераторы скрывают тяжелые картинки под спойлером.

пример спойлеров можно посмотреть на http://rutracker.org/
mickle
Новичок


Всего сообщений: 16
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
4 нояб. 2009
Спойлеры у меня есть.

Но это не решение, имхо.
Например - чисто картиночный тред. Как быть?
Например, пользователь берет и постит 10 картинок. Больших.
А потом следующий еще 10.

И фсе.

Подглядел это решение на форуме Гоблина. Там именно так сделано - картинка прописывается во время написания поста через [ img]. При обработке создается тхумб. Прекрасно работает.
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003
mickle, ссылку дайте посмотреть.
mickle
Новичок


Всего сообщений: 16
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
4 нояб. 2009
Форум закрытый, ссылку дать не могу.
Только скриншотами:
Фрагмент окна ввода поста
В первой строке - результат нажатия на кнопку "Картинка"
Во второй - готовая картинка

Прикрепленный файл (scr2.jpg, 21727 байт, скачан: 1163 раза)
mickle
Новичок


Всего сообщений: 16
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
4 нояб. 2009
А вот как выглядет пост после загрузки:

Прикрепленный файл (scr1.jpg, 50473 байт, скачан: 1237 раз)
mickle
Новичок


Всего сообщений: 16
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
4 нояб. 2009
Блин, еще с утра выяснилось, что getimagesize на хостере не работает для внешних доменов. :(

Есть альтернативы getimagesize?

Пока сделал так (если не работает - сократить в 2 раза):
function check_img2($imgtext) {

....
$size = getimagesize($imgsrc);
if ($size == false) {
echo 'getimagesize not work';
$size=array();
$size[0] = $maxx*2;
$size[1] = $maxy*2;
}
...

UPD: выяснилось - это плохое решение, убрал.

Вот наш картиночный тред и картинка, загруженная таким образом через [ img ]:
http://lisnet.uz/forum/index.php?t=73&p=1558#pp1558

<<Назад  Вперед>>Страницы: 1 2
Модераторы: aerograf, wsx
Печать
Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.22 »   Обработка [ img ] при загрузке
RSS

1 посетитель просмотрел эту тему за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0518. Количество выполненных запросов: 17, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!