Уменьшение больших изображений
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
Jons
- phpBB 2.0.4
- Сообщения: 418
- Зарегистрирован: 18 лет
- Благодарил (а): 65 раз
- Поблагодарили: 2 раза
Re: Уменьшение больших изображений
Ограничивалось по вертикали 1024 пикселями. Оригинал 1240*1753 пикселя.
Оригинал (35 килобайт, т.к. убрал адреса и телефоны) После конвертации (387 килобайт)
Оригинал (35 килобайт, т.к. убрал адреса и телефоны) После конвертации (387 килобайт)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
kak2z
- phpBB 1.4.1
- Сообщения: 47
- Зарегистрирован: 16 лет 5 месяцев
- Благодарил (а): 2 раза
Re: Уменьшение больших изображений
У вас оригинал двухбитный (черно белый). А функция imagecreatetruecolor создает полноцветное изображение. Вот и разница в размере. Кстати хороший вопрос, если решу на своем форуме то ответ выложу. Спасибо.
-
Пчелкин
- phpBB 3.3.0
- Сообщения: 11361
- Зарегистрирован: 16 лет 8 месяцев
- Благодарил (а): 1832 раза
- Поблагодарили: 1358 раз
Re: Уменьшение больших изображений
Jons
А зачем 1280? Потом еще оптимизатор для форума уменьшает? Не лучше сразу в 700?
А зачем 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: Уменьшение больших изображений
Буду ждать возможного решения данной проблемы.
Нет у меня больше никаких оптимизаторов, только этот хак.
Нет у меня больше никаких оптимизаторов, только этот хак.
-
kak2z
- phpBB 1.4.1
- Сообщения: 47
- Зарегистрирован: 16 лет 5 месяцев
- Благодарил (а): 2 раза
Re: Уменьшение больших изображений
Ну в общем замените imagecreatetruecolor на imagecreate. И больше ничего не трогайте)) Решение оказалось проще чем я думал.
-
Jons
- phpBB 2.0.4
- Сообщения: 418
- Зарегистрирован: 18 лет
- Благодарил (а): 65 раз
- Поблагодарили: 2 раза
-
kak2z
- phpBB 1.4.1
- Сообщения: 47
- Зарегистрирован: 16 лет 5 месяцев
- Благодарил (а): 2 раза
Re: Уменьшение больших изображений
хм.. я на своем сайте проверил.. вроде нормально работает.. еще раз проверю.. если увижу проблему то попытаюсь решить..
-
kak2z
- phpBB 1.4.1
- Сообщения: 47
- Зарегистрирован: 16 лет 5 месяцев
- Благодарил (а): 2 раза
Re: Уменьшение больших изображений
К этому хаку можно еще приделать вотемарку, для этого в файле 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: Уменьшение больших изображений
А есть ли способ с помощью этого хака ресайзить только аттачи, а не всё подряд?
У меня на форуме стоит ещё NV Gallery, у которой есть свой ресайзер. Но, как я понял, он работает после этого. И восстановить EXIF уже не получается. Да и сами картинки уже не увеличить.
Предполагаю, что дело где-то в первой строчке, но никак не могу понять что туда лучше всего дописать, чтобы эта фунция срабатывала только на аттачи:
У меня на форуме стоит ещё NV Gallery, у которой есть свой ресайзер. Но, как я понял, он работает после этого. И восстановить EXIF уже не получается. Да и сами картинки уже не увеличить.
Предполагаю, что дело где-то в первой строчке, но никак не могу понять что туда лучше всего дописать, чтобы эта фунция срабатывала только на аттачи:
Код: Выделить всё
if ( $this->is_image() )
{
$this->resize_images();
}-
exec
- phpBB 1.2.1
- Сообщения: 25
- Зарегистрирован: 16 лет 3 месяца
- Поблагодарили: 2 раза
Re: Уменьшение больших изображений
Nekstati
Спасибо за быстрый ответ
Вот что я прочитал на последней странице этого мода:
Нужно сжимать аттачи-картинки до физического размера 800x600px или около. Вышеупомянутый хак как раз и делает это. На хостинге должна лежать картинка ~200кб, а не 2-3МБ
Спасибо за быстрый ответ
Вот что я прочитал на последней странице этого мода:
Если это правда, то, увы, это не интересно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: Уменьшение больших изображений
Хаку - хак
Т.к. аттачи грузятся в папку $config['upload_path'], тогда работает такой вариант:
Добавить ссылку на глобальную переменную $config в фунцию move_file, т.е. заменить
на
и вместо этого:
вставить это:
Возможный побочный эффект: если какие-то картинки, помимо аттачей, будут грузиться в ту же папку (root/files по умолчанию), то они тоже будут ресайзиться.
Что-то ничего лучшего пока в голову не приходит. А по большому счёту ресайз аттачей- картинок должен быть встроенной функцией
Т.к. аттачи грузятся в папку $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();
}Что-то ничего лучшего пока в голову не приходит. А по большому счёту ресайз аттачей- картинок должен быть встроенной функцией
-
Nekstati
- Поддержка

- Сообщения: 3365
- Зарегистрирован: 17 лет 6 месяцев
- Благодарил (а): 37 раз
- Поблагодарили: 1454 раза
Re: Уменьшение больших изображений
Такая встроенная функция есть. Называется «Создавать миниатюры». Установите размеры миниатюр 600×800, и дело в шляпе. Это что качается удобства пользователей. Еси же дело не в удобстве, а в экономии места на сервере, то это совсем другой вопрос, которым разработчики, имхо, задаваться не обязаны.
-
exec
- phpBB 1.2.1
- Сообщения: 25
- Зарегистрирован: 16 лет 3 месяца
- Поблагодарили: 2 раза
Re: Уменьшение больших изображений
1. Миниатюры у нас есть, но размера 180px - это техническая необходимость, т.к. очень много фотографий. Иначе страницы долго грузятся и просматривать их неудобно.
2. Большие фотографии долго грузятся по отдельности, и на них сильно тормозит lytebox в IE.
3. В больших фотографиях у нас нет никакой потребности, так как никто не будет их печатать.
4. Большинству пользователей будет очень трудно предварительно уменьшать размеры перед загрузкой, поэтому запрещать им загружать большие фотки негуманно как-то.
Это чисто техническая проблема, потому тот хак делает очень полезное в нашем случае дело.
Сэкономить место на сервере - дело вторичное. Но как побочный результат - тоже хорошее, напрмер, с точки зрения бэкапа
2. Большие фотографии долго грузятся по отдельности, и на них сильно тормозит lytebox в IE.
3. В больших фотографиях у нас нет никакой потребности, так как никто не будет их печатать.
4. Большинству пользователей будет очень трудно предварительно уменьшать размеры перед загрузкой, поэтому запрещать им загружать большие фотки негуманно как-то.
Это чисто техническая проблема, потому тот хак делает очень полезное в нашем случае дело.
Сэкономить место на сервере - дело вторичное. Но как побочный результат - тоже хорошее, напрмер, с точки зрения бэкапа
-
exec
- phpBB 1.2.1
- Сообщения: 25
- Зарегистрирован: 16 лет 3 месяца
- Поблагодарили: 2 раза
Re: Уменьшение больших изображений
С этим хаком есть ещё одна маленькая проблема
Если будут грузить очень большую картинку, для уменьшения которой на хостинге не хватит памяти PHP, то она не будет вставлена в пост. И не будет числиться среди потерянных. Но зато будет лежать в папке /files в своём первозданном виде и только занимать место.
Этого можно было бы избежать экспериментальным подбором максимальных размеров для загружаемого вложения-картинки, но это очень грубый способ. Насколько я понимаю, размер памяти зависит от произведения w*h, а задавать их нужно по отдельности. Какие бы мы параметры ни задали в качестве максимальных, найдётся такая картинка, которая влезла бы в память, но не будет вставлена по формальной причине w>wmax или h>hmax.
Или где-то в этом хаке предусмотреть возможность такого исхода, чтобы этот файл всё-таки попадал в таблицу phpbb_attachments ещё до ресайза. И тогда он числился бы среди потерянных
Если кто знает как тут лучше поступить, отпишитесь, пожалуйста
Если будут грузить очень большую картинку, для уменьшения которой на хостинге не хватит памяти PHP, то она не будет вставлена в пост. И не будет числиться среди потерянных. Но зато будет лежать в папке /files в своём первозданном виде и только занимать место.
Этого можно было бы избежать экспериментальным подбором максимальных размеров для загружаемого вложения-картинки, но это очень грубый способ. Насколько я понимаю, размер памяти зависит от произведения w*h, а задавать их нужно по отдельности. Какие бы мы параметры ни задали в качестве максимальных, найдётся такая картинка, которая влезла бы в память, но не будет вставлена по формальной причине w>wmax или h>hmax.
Или где-то в этом хаке предусмотреть возможность такого исхода, чтобы этот файл всё-таки попадал в таблицу phpbb_attachments ещё до ресайза. И тогда он числился бы среди потерянных
Если кто знает как тут лучше поступить, отпишитесь, пожалуйста

