Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Обрезка изображений по критерию


 Поделиться

Рекомендованные сообщения

Доброй ночи.

Столкнулся с проблемой "белого фона". Думаю, эта проблема актуальна на сегодняшний день не только для меня.

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

По сути, он обрезает "белый фон" у картинки, но вместе с тем и урезает саму картинку и везде получается разный размер.

Был бы премного признателен за помощь в этом вопросе.

public function resize($width = 0, $height = 0) {
	if (!$this->info['width'] || !$this->info['height']) {
		return;
	}
	$scale = max($width / $this->info['width'], $height / $this->info['height']);
	/*
	if ($scale == 1 && $this->info['mime'] != 'image/png') {
		return;
	}*/
	//$new_width = (int)($this->info['width'] * $scale);
	//$new_height = (int)($this->info['height'] * $scale);
	$new_width=$width;
	$new_height=$height;
	$src_width=$new_width/$scale;
	$src_height=$new_height/$scale;
	$src_x=($this->info['width']-$src_width)/2;
	$src_y=($this->info['height']-$src_height)/2;
	$image_old = $this->image;
	//$this->image = imagecreatetruecolor($width, $height);
	// преобразуем, сохранив пропорции
	$this->image = imagecreatetruecolor($new_width, $new_height);
	if (isset($this->info['mime']) && $this->info['mime'] == 'image/png') {
		imagealphablending($this->image, false);
		imagesavealpha($this->image, true);
		$background = imagecolorallocatealpha($this->image, 255, 255, 255, 127);
		imagecolortransparent($this->image, $background);
	} else {
		$background = imagecolorallocate($this->image, 255, 255, 255);
	}
	// Не будем создавать новый прямоугольник
	//imagefilledrectangle($this->image, 0, 0, $width, $height, $background);

	imagecopyresampled($this->image, $image_old, 0, 0, $src_x, $src_y, $new_width, $new_height, $src_width, $src_height);
	//imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $new_width, $new_height);
	imagedestroy($image_old);
	//$this->info['width']  = $width;
	// $this->info['height'] = $height;
	$this->info['width']  = $new_width;
	$this->info['height'] = $new_height;
}

Ссылка на комментарий
Поделиться на других сайтах


  • 2 года спустя...

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.