Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[dev] Upload image resizer

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

[dev] Upload image resizer

Сообщение Siava »

Набросок мода, автоматического уменьшения загружаемых изображений на сервер.
Может подобное уже выкладывали, в этом варианте исправил масштабирование. Всё работает корректно.

functions_upload.php

найти функцию

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

function move_file(
найти в этой функции строку

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

phpbb_chmod($this->destination_file, $chmod);
добавить перед ней

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

			if ( $this->is_image() )
			{
				$this->resize_images();
			}
в конце функции найти

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

		return true;
	}
добавить после

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

    /**
    * Resize images with the true diemensions
    * version 0.31
    */
    function resize_images()
    {
       if ( $this->is_image() )
       {
			$limit_width = 1024;
			$limit_height = 768;
			$quality = 90;
			$size = getimagesize($this->destination_file);
			$width = $size[0];
			$height = $size[1];
			if($height > $limit_height OR $width > $limit_width)
			{
				$int_factor = min(($limit_width / $width), ($limit_height / $height));
				// pano-test add
				// if (max($width, $height) / min($width, $height) > 2) $int_factor = $int_factor * 1.5;
				// end
				$width = round($width * $int_factor);
				$height = round($height * $int_factor);
				$destination = imagecreatetruecolor($width, $height);

				if ( $this->extension == "jpg" || $this->extension == "jpeg" )
				{
					@ini_set('gd.jpeg_ignore_warning', 1);
					$source = imagecreatefromjpeg($this->destination_file);
				}
				elseif ( $this->extension == "png" )
				{
					@imagealphablending($destination, false);
					@imagesavealpha($destination, true);
					$source = imagecreatefrompng($this->destination_file);
				}
				elseif ( $this->extension == "gif" )
				{
					$source = imagecreatefromgif($this->destination_file);
					$trnprt_indx = imagecolortransparent($source);
					if ($trnprt_indx >= 0) //transparent
					{
						$trnprt_color = imagecolorsforindex($source, $trnprt_indx);
						$trnprt_indx = imagecolorallocate($destination, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
						imagefill($destination, 0, 0, $trnprt_indx);
						imagecolortransparent($destination, $trnprt_indx);
					}
				}

				imagecopyresampled($destination, $source, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
				if ( $this->extension == "jpg" || $this->extension == "jpeg" ) imagejpeg($destination, $this->destination_file, $quality);
				elseif ( $this->extension == "png" ) imagepng($destination, $this->destination_file);
				elseif ( $this->extension == "gif" ) imagegif($destination, $this->destination_file);
				imagedestroy($destination);
			}
		}
	}
===============================================================
Оформлено в виде мода в стандарте MODX + управление через ACP --> [Beta]Upload image resizer
Последний раз редактировалось Siava 17.03.2012 16:03, всего редактировалось 6 раз.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Shredder
Former team member
Сообщения: 2217
Стаж: 15 лет 3 месяца
Благодарил (а): 236 раз
Поблагодарили: 561 раз
Контактная информация:

Re: [dev] Upload image resizer

Сообщение Shredder »

Siava
Что понимается под масштабированием? Можете описать подробнее?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: [dev] Upload image resizer

Сообщение Siava »

Shredder, понимаю корректное соблюдение пропорций при уменьшении.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
ArtTeam
phpBB 1.4.4
Сообщения: 185
Стаж: 13 лет 10 месяцев
Благодарил (а): 5 раз
Поблагодарили: 3 раза

Re: [dev] Upload image resizer

Сообщение ArtTeam »

http://phpbb3.pytalhost.com/viewtopic.p ... 89&start=0
а это не тоже самое ?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: [dev] Upload image resizer

Сообщение Siava »

ArtTeam, с виду похоже, так как код брался за основу.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
dimon-sl
phpBB 1.4.4
Сообщения: 100
Стаж: 12 лет 6 месяцев
Благодарил (а): 9 раз
Поблагодарили: 2 раза

Re: [dev] Upload image resizer

Сообщение dimon-sl »

Полезный МОД - пользую уже очень давно.
Но у него есть один недостаток - сжимает в фото с качеством 50% (некоторые фото, где, например, много насыщенных красных/синих цветов выглядят слишком пережатыми).
Если есть возможность настройки качества сжатия - вобще бы цены не было.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: [dev] Upload image resizer

Сообщение Siava »

dimon-sl, качество можно настроить в этих строках:

найти:

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

				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);
заменить на:

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

				if ( $this->extension == "jpg" || $this->extension == "jpeg" ) imagejpeg($destination, $this->destination_file, 100);
				elseif ( $this->extension == "png" ) imagepng($destination, $this->destination_file, 100);
				elseif ( $this->extension == "gif" ) imagegif($destination, $this->destination_file, 100);
где 100 - максимальное качество.

Добавлено спустя 2 минуты 36 секунд:
Обновил первое сообщение с учётом установки качества.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: [dev] Upload image resizer

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

То есть если впихнуть во вложение бОльшую картинку - она при влете на ФТПи вложением уменьшится физически до установленных размеров? Так что-ли?
ArtTeam
phpBB 1.4.4
Сообщения: 185
Стаж: 13 лет 10 месяцев
Благодарил (а): 5 раз
Поблагодарили: 3 раза

Re: [dev] Upload image resizer

Сообщение ArtTeam »

ага уменьшиться :D у меня 5 мб фото уменьшаются примерно до 150 кб
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: [dev] Upload image resizer

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

Да..уменьшается...проверил..кайф..
Аватара пользователя
dimon-sl
phpBB 1.4.4
Сообщения: 100
Стаж: 12 лет 6 месяцев
Благодарил (а): 9 раз
Поблагодарили: 2 раза

Re: [dev] Upload image resizer

Сообщение dimon-sl »

Siava писал(а):Обновил первое сообщение с учётом установки качества.
Во, то что надо!
Спасибо за доработку. 10 из 10 :)
Shredder
Former team member
Сообщения: 2217
Стаж: 15 лет 3 месяца
Благодарил (а): 236 раз
Поблагодарили: 561 раз
Контактная информация:

Re: [dev] Upload image resizer

Сообщение Shredder »

Siava
Проблема с чёрно-белыми рисунками исправлена или осталась?
Уменьшение больших изображений

И второе: решил проверить работу мода, не могу загрузить ни одно png изображение. При попытке загрузки:
[phpBB Debug] PHP Warning: in file /includes/functions_upload.php on line 73: imagepng() [function.imagepng]: gd-png: fatal libpng error: zlib failed to initialize compressor -- stream error
[phpBB Debug] PHP Warning: in file /includes/functions_upload.php on line 73: imagepng() [function.imagepng]: gd-png error: setjmp returns error condition
[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4589: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3768)
[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4591: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3768)
[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4592: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3768)
[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4593: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3768)
После этого рисунок не отображается в сообщении - вместо него крест.

Также неплохо было бы проверить мод на все остальные ошибки, здесь и далее: Уменьшение больших изображений

Добавлено спустя 10 минут 17 секунд:
Попробовал загрузить gif:
[phpBB Debug] PHP Warning: in file /includes/functions_upload.php on line 69: imagecreatefromgif() [function.imagecreatefromgif]: './files/1043_5a71f788a2413e734c585644e56cbe1e' is not a valid GIF file
[phpBB Debug] PHP Warning: in file /includes/functions_upload.php on line 71: imagecopyresampled(): supplied argument is not a valid Image resource
[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4589: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3768)
[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4591: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3768)
[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4592: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3768)
[phpBB Debug] PHP Warning: in file /includes/functions.php on line 4593: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3768)
После этого вместо gif - сплошь чёрный фон.

jpg отработало нормально.
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: [dev] Upload image resizer

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

Народ фотошопом толком не умеют Гифы уменьшать в размерах..а вы хотите что б тупой физический хак их ресайзил корректно...да еще что б потом гифы показывались...гифы - это как бы многослойные графические файлы...в большей части с прозрачным фоновым слоем...ПНГ - воще могут быть супермногослойными и с отключенными слоями...
Неужели мало одних Импегов? Возьмите "мертвые" гиф и Пнг...они ресайзятся нормально...но только "мертвые" и не динамические...
Shredder
Former team member
Сообщения: 2217
Стаж: 15 лет 3 месяца
Благодарил (а): 236 раз
Поблагодарили: 561 раз
Контактная информация:

Re: [dev] Upload image resizer

Сообщение Shredder »

Пчелкин
Мне этот мод вообще можно сказать не нужен, я лишь тестирую и помогаю улучшению качества.

Добавлено спустя 1 минуту 16 секунд:
Если в моде заявлено уменьшение gif и png, значит он должен обрабатывать и их тоже, а не один джпег, в противном случае эти функции следует либо доработать, либо вырезать.

Добавлено спустя 12 минут 36 секунд:
Так как принцип там один и тот же, автору могу посоветовать обратить внимание на вот этот мод для уменьшения аватар, в своё время скачивал его в заброшенном виде и немного дорабатывал. Единственное, чего не удалось добиться - корректного ресайза некоторых анимированных gif, у которых в кадрах возникали искажения.
avatar_true_resize_1.1.0_alpha.zip
(33.24 КБ) 401 скачивание
Добавлено спустя 2 минуты 48 секунд:
И кстати, в самом phpBB уже есть встроенный механизм для создания миниатюр, в котором корректно обрабатываются ВСЕ типы файлов, в том числе анимации. Если удастся его в коде отыскать, то можно будет "портировать" сюда. Дерзайте.
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: [dev] Upload image resizer

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

Shredder писал(а): либо вырезать
Конечно лучше это...хватило бы и жимпегов...за ресайзер ав огромное спасибо...для один тех-же жимпегов - отлично!!!
Закрыто

Вернуться в «Бета-версии модов для phpBB 3.0.x»