繁体   English   中英

PHP GD 拇指质量差

[英]PHP GD poor thumb quality

            $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;

结果是质量差的调整大小的图像,我做错了什么? 我还尝试使用质量 = 100 的 imagejpeg

使用imagecopytruecolor()而不是

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

这是官方 PHP 文档页面上的通知:

由于调色板图像限制(255+1 色)存在问题。 重采样或过滤图像通常需要比 255 更多的 colors,一种近似值用于计算新的重采样像素及其颜色。 对于调色板图像,我们尝试分配一种新颜色,如果失败,我们选择最接近的(理论上)计算颜色。 这并不总是最接近的视觉颜色。 这可能会产生奇怪的结果,例如空白(或视觉空白)图像。 要跳过此问题,请使用真彩色图像作为目标图像,例如由 imagecreatetruecolor() 创建的图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM