Как можно средствами php обрезать картинки?

вопросы и ответы по использованию PHP
Ответить
sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Как можно средствами php обрезать картинки?

Сообщение sapogi77 » 02 окт 2018, 14:20

Скачиваю картинки с сайта, для дальнейшего использования нужно отрезать часть картинки. Как это можно сделать с помощью PHP?

Аватара пользователя
xscripts
Сообщения: 80
Зарегистрирован: 24 янв 2012, 12:48
Контактная информация:

Re: Как можно средствами php обрезать картинки?

Сообщение xscripts » 02 окт 2018, 15:17

Вот вам пример подобной функции:

function crop($file_input, $file_output, $crop = 'square',$percent = false) {
	list($w_i, $h_i, $type) = getimagesize($file_input);

   if( $type=='jpg')
       $type='jpeg';

	if (!$w_i || !$h_i) {
		echo 'не возможно получить длину и ширину';
		return;
        }
        $types = array('','gif','jpeg','png');
        $ext = $types[$type];
        if ($ext) {
    	        $func = 'imagecreatefrom'.$ext;
    	        $img = $func($file_input);
        } else {
    	        echo 'Неккоректный формат';
		return;
        }
	if ($crop == 'square') {
		$min = $w_i;
		if ($w_i > $h_i) $min = $h_i;
		$w_o = $h_o = $min;
	} else {
		list($x_o, $y_o, $w_o, $h_o) = $crop;
		if ($percent) {
			$w_o *= $w_i / 100;
			$h_o *= $h_i / 100;
			$x_o *= $w_i / 100;
			$y_o *= $h_i / 100;
		}
    	        if ($w_o < 0) $w_o += $w_i;
	        $w_o -= $x_o;
	   	if ($h_o < 0) $h_o += $h_i;
		$h_o -= $y_o;
	}
   //echo "$w_o, $h_o<br>";
	$img_o = imagecreatetruecolor($w_o, $h_o);
	imagecopy($img_o, $img, 0, 0, $x_o, $y_o, $w_o, $h_o);
	if ($type == 2) {
		return imagejpeg($img_o,$file_output,100);
	} else {
		$func = 'image'.$ext;
		return $func($img_o,$file_output);
	}
}

Используется:

crop("путь к источнику","путь к результату", array(left, top, width, height),"в процентах");
http://x-scripts.com/

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

<?php
$xhe_host ="127.0.0.1:7010";

require("../Templates/xweb_human_emulator.php");

$browser->navigate("http://x-scripts.com");

$app->quit();?>

sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Re: Как можно средствами php обрезать картинки?

Сообщение sapogi77 » 02 окт 2018, 15:39

xscripts писал(а):
02 окт 2018, 15:17

Используется:
crop("путь к источнику","путь к результату", array(left, top, width, height),"в процентах");
А что значит left, top, width, height и "в процентах"?

Аватара пользователя
xscripts
Сообщения: 80
Зарегистрирован: 24 янв 2012, 12:48
Контактная информация:

Re: Как можно средствами php обрезать картинки?

Сообщение xscripts » 02 окт 2018, 15:48

sapogi77 писал(а):
02 окт 2018, 15:39
А что значит left, top, width, height и "в процентах"?
left - отступ от левого края картинки
top - отступ от верхнего края картинки
width - ширина картинки
height - высота картинки
"в процентах" - указывает параметры высоты и ширины заданны в процентах или нет.

Вот такой вот вызов:
crop("1.png", "1_0x10x80x92_t.png", array(0,10,80,92), true);

Это отступаем от верхнего края 10px при этом от ширины у нас остаётся 80%,а от высоты 92%. По этим параметрам и идёт обрезание картинки.

Если делать вызов :
crop("1.png", "1_0x10x80x92_t.png", array(0,10,80,92), false);

тогда отступ сверху такой же, ширина картинки 80, высота 92. ТО есть мы можем либо задавать жёсткие размеры либо отрезать сколько то процентов от ширины и высоты.
http://x-scripts.com/

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

<?php
$xhe_host ="127.0.0.1:7010";

require("../Templates/xweb_human_emulator.php");

$browser->navigate("http://x-scripts.com");

$app->quit();?>

sapogi77
Сообщения: 17
Зарегистрирован: 27 мар 2018, 15:48

Re: Как можно средствами php обрезать картинки?

Сообщение sapogi77 » 02 окт 2018, 16:03

Спасибо за помощь. Всё работает как надо.

Ответить