PHP GD плохое качество большого пальца - PullRequest
0 голосов
/ 22 июля 2011
            $tmp_im = imagecreatetruecolor($width, $height);
            $x = $this->getX();
            $y = $this->getY();

            $w = floor($resize_height * ($x / $y));
            $h = $resize_height;

            $this->tmp_im = imagecreatetruecolor($w, $h);

                            imagealphablending($this->tmp_im, false);
                            imagesavealpha($this->tmp_im, true);

                            imagecopyresampled($this->tmp_im, $this->im, 0, 0, 0, 0, $w, $h, $this->getX(), $this->getY());

            $this->im = $this->tmp_im;


            $hs = floor(($width - $this->getX())/2);
            $vs = floor(($height - $this->getY())/2);

            imagecopy($tmp_im, $this->im, $hs, $vs, 0, 0, $this->getX(), $this->getY());

            $this->im = $tmp_im;

результат - изображение низкого качества с измененным размером, что я делаю не так?я также попытался использовать imagejpeg с качеством = 100

1 Ответ

2 голосов
/ 22 июля 2011

Используйте imagecopytruecolor() вместо

imagecopy($tmp_im, $this->im, $hs, $vs, 0, 0, $this->getX(), $this->getY());

Это уведомление на официальной странице документации по PHP * :

Существует проблема из-за ограничений изображения палитры (255 + 1 цветов). Для повторной выборки или фильтрации изображения обычно требуется больше цветов, чем 255, своего рода аппроксимация используется для расчета нового пересчитанного пикселя и его цвет. С помощью изображения палитры мы пытаемся выделить новый цвет, если что не удалось, мы выбираем ближайший (в теории) вычисляемый цвет. Это не всегда самый близкий визуальный цвет. Это может привести к странному результату, как пустые (или визуально пустые) изображения. Чтобы пропустить эту проблему, пожалуйста, использовать изображение истинного цвета в качестве конечного изображения, например, созданного imagecreatetruecolor ().

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