powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как обрезать картинку до квадратика
9 сообщений из 9, страница 1 из 1
Как обрезать картинку до квадратика
    #37789801
armix2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как обрезать картинку до квадратика?
Нужно для preview фоток, 70x70
...
Рейтинг: 0 / 0
Как обрезать картинку до квадратика
    #37790003
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
        $toWidth = $toWidth !== false ? $toWidth : $this->width;
        $toHeight = $toHeight !== false ? $toHeight : $this->height;

        if($proportional)
        {
            $newHeight = $toHeight;
            $newWidth = round($newHeight / $this->height * $this->width);


            if($newWidth > $toWidth)
            {
                $newWidth = $toWidth;
                $newHeight = round($newWidth / $this->width * $this->height);
            }
        }
        else
        {
            $newWidth = $toWidth;
            $newHeight = $toHeight;
        }

        $newImage = imagecreatetruecolor($newWidth, $newHeight);

        $this->preserveTransparency($newImage);

        imagecopyresampled($newImage, $this->image, 0, 0, 0, 0, $newWidth, $newHeight, $this->width, $this->height);
...
Рейтинг: 0 / 0
Как обрезать картинку до квадратика
    #37790487
armix2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
        $toWidth = $toWidth !== false ? $toWidth : $this->width;
        $toHeight = $toHeight !== false ? $toHeight : $this->height;

        if($proportional)
        {
            $newHeight = $toHeight;
            $newWidth = round($newHeight / $this->height * $this->width);


            if($newWidth > $toWidth)
            {
                $newWidth = $toWidth;
                $newHeight = round($newWidth / $this->width * $this->height);
            }
        }
        else
        {
            $newWidth = $toWidth;
            $newHeight = $toHeight;
        }

        $newImage = imagecreatetruecolor($newWidth, $newHeight);

        $this->preserveTransparency($newImage);

        imagecopyresampled($newImage, $this->image, 0, 0, 0, 0, $newWidth, $newHeight, $this->width, $this->height);



Ваш пример просто вытягивает меньшую сторону до квадрата, а мне нужно как-то обрезать большую сторону чтобы получился квадрат, причем если width>height нужно обрезать width слева и справа одинаково, чтобы взять середку изображения, а если width<height нужно обрезать height снизу.

Как сделать?
...
Рейтинг: 0 / 0
Как обрезать картинку до квадратика
    #37790489
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    public function crop($width, $height, $startX = false, $startY = false)
    {
    	$width = (int) $width;
    	$height = (int) $height;

		//Centered crop
     	$startX = $startX === false ? floor(($this->width - $width) / 2) : intval($startX);
    	$startY = $startY === false ? floor(($this->height - $height) / 2) : intval($startY);

    	//Check dimensions
    	$startX = max(0, min($this->width, $startX));
    	$startY = max(0, min($this->height, $startY));
    	$width = min($width, $this->width - $startX);
    	$height = min($height, $this->height - $startY);


		$newImage = imagecreatetruecolor($width, $height);

		imagecopyresampled($newImage, $this->image, 0, 0, $startX, $startY, $width, $height, $width, $height);

    }
...
Рейтинг: 0 / 0
Как обрезать картинку до квадратика
    #37790493
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
armix2000Ваш пример просто вытягивает меньшую сторону до квадрата
Если бы читали под а не просто бездумно использовали, то не написали бы так.
...
Рейтинг: 0 / 0
Как обрезать картинку до квадратика
    #37790739
armix2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    public function crop($width, $height, $startX = false, $startY = false)
    {
    	$width = (int) $width;
    	$height = (int) $height;

		//Centered crop
     	$startX = $startX === false ? floor(($this->width - $width) / 2) : intval($startX);
    	$startY = $startY === false ? floor(($this->height - $height) / 2) : intval($startY);

    	//Check dimensions
    	$startX = max(0, min($this->width, $startX));
    	$startY = max(0, min($this->height, $startY));
    	$width = min($width, $this->width - $startX);
    	$height = min($height, $this->height - $startY);


		$newImage = imagecreatetruecolor($width, $height);

		imagecopyresampled($newImage, $this->image, 0, 0, $startX, $startY, $width, $height, $width, $height);

    }



Он везде обрезает посередине, а мне нужно если width<height нужно обрезать height только снизу
...
Рейтинг: 0 / 0
Как обрезать картинку до квадратика
    #37790764
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
armix2000нужно если width<height нужно обрезать height только снизуТак присваивайте $startY=0 по выполнению условия неравенства.
...
Рейтинг: 0 / 0
Как обрезать картинку до квадратика
    #37790783
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели так сложно самому написать 3 строчки банального кода
...
Рейтинг: 0 / 0
Как обрезать картинку до квадратика
    #37790790
armix2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

Сори уже отупел совсем, спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как обрезать картинку до квадратика
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]