Уменьшение больших изображений

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Jons
phpBB 2.0.4
Сообщения: 418
Зарегистрирован: 18 лет
Благодарил (а): 65 раз
Поблагодарили: 2 раза

Re: Уменьшение больших изображений

Сообщение Jons »

Ограничивалось по вертикали 1024 пикселями. Оригинал 1240*1753 пикселя.

Оригинал (35 килобайт, т.к. убрал адреса и телефоны)
Скан 1.png
После конвертации (387 килобайт)
Скан 11.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
kak2z
phpBB 1.4.1
Сообщения: 47
Зарегистрирован: 16 лет 5 месяцев
Благодарил (а): 2 раза

Re: Уменьшение больших изображений

Сообщение kak2z »

У вас оригинал двухбитный (черно белый). А функция imagecreatetruecolor создает полноцветное изображение. Вот и разница в размере. Кстати хороший вопрос, если решу на своем форуме то ответ выложу. Спасибо.
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Зарегистрирован: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Уменьшение больших изображений

Сообщение Пчелкин »

Jons
А зачем 1280? Потом еще оптимизатор для форума уменьшает? Не лучше сразу в 700?
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Jons
phpBB 2.0.4
Сообщения: 418
Зарегистрирован: 18 лет
Благодарил (а): 65 раз
Поблагодарили: 2 раза

Re: Уменьшение больших изображений

Сообщение Jons »

Буду ждать возможного решения данной проблемы.

Нет у меня больше никаких оптимизаторов, только этот хак.
kak2z
phpBB 1.4.1
Сообщения: 47
Зарегистрирован: 16 лет 5 месяцев
Благодарил (а): 2 раза

Re: Уменьшение больших изображений

Сообщение kak2z »

Ну в общем замените imagecreatetruecolor на imagecreate. И больше ничего не трогайте)) Решение оказалось проще чем я думал.
Jons
phpBB 2.0.4
Сообщения: 418
Зарегистрирован: 18 лет
Благодарил (а): 65 раз
Поблагодарили: 2 раза

Re: Уменьшение больших изображений

Сообщение Jons »

Цветные фотки при этом превращаются в убожище. Кошмар.
kak2z
phpBB 1.4.1
Сообщения: 47
Зарегистрирован: 16 лет 5 месяцев
Благодарил (а): 2 раза

Re: Уменьшение больших изображений

Сообщение kak2z »

хм.. я на своем сайте проверил.. вроде нормально работает.. еще раз проверю.. если увижу проблему то попытаюсь решить..
kak2z
phpBB 1.4.1
Сообщения: 47
Зарегистрирован: 16 лет 5 месяцев
Благодарил (а): 2 раза

Re: Уменьшение больших изображений

Сообщение kak2z »

К этому хаку можно еще приделать вотемарку, для этого в файле functions_upload.php добавьте перед строками

Код: Выделить всё

       if ( $this->extension == "jpg" || $this->extension == "jpeg" ) imagejpeg($destination, $this->destination_file);
       elseif ( $this->extension == "png" ) imagepng($destination, $this->destination_file);
       elseif ( $this->extension == "gif" ) imagegif($destination, $this->destination_file);
вот это

Код: Выделить всё

$black = imagecolorallocate($destination,255,255,255);
$str = "Ваш Текст";
imagestring($destination,5,8,4,$str, $black);
и на всех сжимаемых изображениях будет ваш текст)))
exec
phpBB 1.2.1
Сообщения: 25
Зарегистрирован: 16 лет 3 месяца
Поблагодарили: 2 раза

Re: Уменьшение больших изображений

Сообщение exec »

А есть ли способ с помощью этого хака ресайзить только аттачи, а не всё подряд?
У меня на форуме стоит ещё NV Gallery, у которой есть свой ресайзер. Но, как я понял, он работает после этого. И восстановить EXIF уже не получается. Да и сами картинки уже не увеличить.

Предполагаю, что дело где-то в первой строчке, но никак не могу понять что туда лучше всего дописать, чтобы эта фунция срабатывала только на аттачи:

Код: Выделить всё

       if ( $this->is_image() )
       {
          $this->resize_images();
       }
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Зарегистрирован: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Уменьшение больших изображений

Сообщение Nekstati »

Для ресайза только аттачей есть клёвый Highslide Attachment MOD.
exec
phpBB 1.2.1
Сообщения: 25
Зарегистрирован: 16 лет 3 месяца
Поблагодарили: 2 раза

Re: Уменьшение больших изображений

Сообщение exec »

Nekstati
Спасибо за быстрый ответ
Вот что я прочитал на последней странице этого мода:
but thats only a client-side-resize and not a real resize ;)
Если это правда, то, увы, это не интересно
Нужно сжимать аттачи-картинки до физического размера 800x600px или около. Вышеупомянутый хак как раз и делает это. На хостинге должна лежать картинка ~200кб, а не 2-3МБ
exec
phpBB 1.2.1
Сообщения: 25
Зарегистрирован: 16 лет 3 месяца
Поблагодарили: 2 раза

Re: Уменьшение больших изображений

Сообщение exec »

Хаку - хак :D
Т.к. аттачи грузятся в папку $config['upload_path'], тогда работает такой вариант:
Добавить ссылку на глобальную переменную $config в фунцию move_file, т.е. заменить

Код: Выделить всё

		global $user, $phpbb_root_path;
на

Код: Выделить всё

		global $user, $phpbb_root_path, $config;
и вместо этого:

Код: Выделить всё

       if ( $this->is_image())
       {
          $this->resize_images();
       }
вставить это:

Код: Выделить всё

       if ( $this->is_image() && $destination==$config['upload_path'])
       {
          $this->resize_images();
       }
Возможный побочный эффект: если какие-то картинки, помимо аттачей, будут грузиться в ту же папку (root/files по умолчанию), то они тоже будут ресайзиться.

Что-то ничего лучшего пока в голову не приходит. А по большому счёту ресайз аттачей- картинок должен быть встроенной функцией
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Зарегистрирован: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Уменьшение больших изображений

Сообщение Nekstati »

Такая встроенная функция есть. Называется «Создавать миниатюры». Установите размеры миниатюр 600×800, и дело в шляпе. Это что качается удобства пользователей. Еси же дело не в удобстве, а в экономии места на сервере, то это совсем другой вопрос, которым разработчики, имхо, задаваться не обязаны.
exec
phpBB 1.2.1
Сообщения: 25
Зарегистрирован: 16 лет 3 месяца
Поблагодарили: 2 раза

Re: Уменьшение больших изображений

Сообщение exec »

1. Миниатюры у нас есть, но размера 180px - это техническая необходимость, т.к. очень много фотографий. Иначе страницы долго грузятся и просматривать их неудобно.
2. Большие фотографии долго грузятся по отдельности, и на них сильно тормозит lytebox в IE.
3. В больших фотографиях у нас нет никакой потребности, так как никто не будет их печатать.
4. Большинству пользователей будет очень трудно предварительно уменьшать размеры перед загрузкой, поэтому запрещать им загружать большие фотки негуманно как-то.

Это чисто техническая проблема, потому тот хак делает очень полезное в нашем случае дело.
Сэкономить место на сервере - дело вторичное. Но как побочный результат - тоже хорошее, напрмер, с точки зрения бэкапа
exec
phpBB 1.2.1
Сообщения: 25
Зарегистрирован: 16 лет 3 месяца
Поблагодарили: 2 раза

Re: Уменьшение больших изображений

Сообщение exec »

С этим хаком есть ещё одна маленькая проблема
Если будут грузить очень большую картинку, для уменьшения которой на хостинге не хватит памяти PHP, то она не будет вставлена в пост. И не будет числиться среди потерянных. Но зато будет лежать в папке /files в своём первозданном виде и только занимать место.

Этого можно было бы избежать экспериментальным подбором максимальных размеров для загружаемого вложения-картинки, но это очень грубый способ. Насколько я понимаю, размер памяти зависит от произведения w*h, а задавать их нужно по отдельности. Какие бы мы параметры ни задали в качестве максимальных, найдётся такая картинка, которая влезла бы в память, но не будет вставлена по формальной причине w>wmax или h>hmax.

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

Если кто знает как тут лучше поступить, отпишитесь, пожалуйста

Вернуться в «Запросы модов для phpBB 3.0.x»