Изображение становится пикселированным при изменении размера - PullRequest
1 голос
/ 24 марта 2012

Я пытаюсь изменить размер большого изображения, но результат изображения пикселируется с помощью следующей функции

function resize($width, $height) {
        $this->width = $width;
        $this->height = $height;

        $this->image_reproportion();

        $new_image = imagecreatetruecolor($this->width, $this->height);

        imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $this->width, $this->height, $this->getWidth(), $this->getHeight());
        $this->image = $new_image;
    }

    function image_reproportion() {

        if (!is_numeric($this->width) OR !is_numeric($this->height) OR $this->width == 0 OR $this->height == 0)
            return;

        if (!is_numeric($this->getWidth()) OR !is_numeric($this->getheight()) OR $this->getWidth() == 0 OR $this->getheight() == 0)
            return;

        $new_width = ceil($this->getWidth() * $this->height / $this->getheight());
        $new_height = ceil($this->width * $this->getheight() / $this->getWidth());

        $ratio = (($this->getheight() / $this->getWidth()) - ($this->height / $this->width));

        if ($this->master_dim != 'width' AND $this->master_dim != 'height') {
            $this->master_dim = ($ratio < 0) ? 'width' : 'height';
        }

        if (($this->width != $new_width) AND ($this->height != $new_height)) {
            if ($this->master_dim == 'height') {
                $this->width = $new_width;
            } else {
                $this->height = $new_height;
            }
        }
    }

Чтобы использовать приведенный выше код, я вызываю изменение размера ('200', '200');
Путь к изображению и файл являются правильными. его размер изменяется, но изображение становится пиксельным.

1 Ответ

2 голосов
/ 10 июля 2012

Я установил Gmagick, который сотворил магию:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...