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

Работа с фото вложениями

У вас есть идея для расширения функциональности phpBB? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Работа с фото вложениями

Сообщение Vlad__ »

В связи с тем, что расширение Editor of attachments (quoting, watermark) больше не поддерживается интересует реализация его функций. Может уже есть готовые решения по отдельности. Подскажите, пожалуйста?

1. Сжатие картинок. В Editor of attachments я выставлял качество джипег 70% и загруженный файл из 500 кил - 2 мега становился 60-100 кил. Значительно экономит место на хостинге.
2. Водяной знак на фото.
3. Цитирование вложений как изображений в тегах img.
Аватара пользователя
Джим
phpBB 2.0.0
Сообщения: 203
Стаж: 14 лет 5 месяцев
Благодарил (а): 151 раз
Поблагодарили: 67 раз
Контактная информация:

Re: Работа с фото вложениями

Сообщение Джим »

Vlad__ писал(а): 19.05.2017 13:28 Сжатие картинок.
Я для себя нашел временный выход в том, чтобы вставить нужные мне функции - сжатие и автоповорот (это из другого расширения "Image Rotator") напрямую в phpbb/files/filespec.php
Жду, пока появится что-то более цивилизованное. Потому, что, например, встроенное в движок сжатие фото не так сильно сжимает, как Editor of attachments, даже если там выставить те же 70%. При ежедневной заливке сотен фотографий Editor of attachments экономил прилично дискового пространства.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Работа с фото вложениями

Сообщение Vlad__ »

Джим писал(а): 19.05.2017 18:45Я для себя нашел временный выход в том, чтобы вставить нужные мне функции - сжатие и автоповорот (это из другого расширения "Image Rotator") напрямую в phpbb/files/filespec.php
Можно подробнее?
Аватара пользователя
Джим
phpBB 2.0.0
Сообщения: 203
Стаж: 14 лет 5 месяцев
Благодарил (а): 151 раз
Поблагодарили: 67 раз
Контактная информация:

Re: Работа с фото вложениями

Сообщение Джим »

Vlad__ писал(а): 20.05.2017 2:00Можно подробнее?
А что подробнее? Исковеркал filespec.php, вставив туда самопальную функцию сжатия и автоповорота, основанную на вышеуказанных расширениях. Или Вам код показать? Он может криво работать, т.к. я не профи.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Работа с фото вложениями

Сообщение Vlad__ »

Джим писал(а): 20.05.2017 11:14Или Вам код показать? Он может криво работать, т.к. я не профи.
Я тем более не профи. Покажите пожалуйста код. И куда вставлять. Может гуру посмотрят и оформят его в виде отдельного расширения.
Аватара пользователя
Джим
phpBB 2.0.0
Сообщения: 203
Стаж: 14 лет 5 месяцев
Благодарил (а): 151 раз
Поблагодарили: 67 раз
Контактная информация:

Re: Работа с фото вложениями

Сообщение Джим »

Вот мой вариант:
Открыть phpbb/files/filespec.php
Найти

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

try
			{
				$this->filesystem->phpbb_chmod($this->destination_file, $chmod);
Добавить перед

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

			if ( $this->is_image() )
			{
				$this->resize_images();
			}
Найти

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

	/**
	 * Performing additional checks
Добавить перед

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

    function resize_images()
    {
       if ( $this->is_image() )
       {
			$exif = @exif_read_data($this->destination_file, 0, true);


				if(isset($exif['IFD0']['Orientation']))
				{
					$source = imagecreatefromjpeg($this->destination_file);
					$rotate = true;

					switch($exif['IFD0']['Orientation'])
					{
						case 3: // 180 rotate left
							$rotate = imagerotate($source, 180, 0);
							break;
						case 6: // 90 rotate right
							$rotate = imagerotate($source, -90 ,0);
							break;
						case 8: // 90 rotate left
							$rotate = imagerotate($source, 90, 0);
							break;
						default:
							$rotate = false;
							break;
					}
					if($rotate)
					{
						unlink($this->destination_file);
						imagejpeg($rotate, $this->destination_file, 100);
					}
				}
			
			$limit_width = 1024;
			$limit_height = 768;
			$quality = 70;
			$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));
				$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);
			}
		}
	}
Я сжимаю до 1024х768, но внутри кода это можно изменить, так же, как и компрессию.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: Работа с фото вложениями

Сообщение Vlad__ »

Спасибо. Может кто подскажет как (если пойму конечно) или сделает эти правки в виде отдельного расширения.
Ответить

Вернуться в «Запросы расширений для phpBB»