Как обрезать фото квадратом на PHP?

Вот так на GD2 например:

function createsquarethumbnail($filetype, $origfile, $thumbfile, $new_size) {
	$compression = "gd2";
	if ($filetype == 1) { $origimage = imagecreatefromgif($origfile); }
	elseif ($filetype == 2) { $origimage = imagecreatefromjpeg($origfile); }
	elseif ($filetype == 3) { $origimage = imagecreatefrompng($origfile); }

	$old_x = imagesx($origimage);
	$old_y = imagesy($origimage);

	$x = 0; $y = 0;

	if ($old_x > $old_y) {
		$x = ceil(($old_x - $old_y) / 2);
		$old_x = $old_y;
	} elseif ($old_y > $old_x) {
		$y = ceil(($old_y - $old_x) / 2);
		$old_y = $old_x;
	}
	$new_image = imagecreatetruecolor($new_size,$new_size);
	if ($filetype == 3 && $compression != "gd1") {
		imagealphablending($new_image, false);
		imagesavealpha($new_image, true);
	}
	imagecopyresampled($new_image,$origimage,0,0,$x,$y,$new_size,$new_size,$old_x,$old_y);

	if ($filetype == 1) { imagegif($new_image,$thumbfile,100); }
	elseif ($filetype == 2) { imagejpeg($new_image,$thumbfile,100); }
	elseif ($filetype == 3) { imagepng($new_image,$thumbfile,5); }

	imagedestroy($origimage);
	imagedestroy($new_image);
}


Пример:

createsquarethumbnail(3, getcwd()."/photo.png", getcwd()."/photo_box.png", 150);
для PNG например.

Если надо на ImageMagick пишите в комментариях. Прочту сделаю.

0 комментариев

Оставить комментарий




Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.