不失真和透明度的情况下调整PNG大小

3

我需要调整图片大小,因为我们上传的是可打印的高分辨率图像,而预览时人们不需要4000像素以上的图像。一些图像使用rgb色彩空间"eci",另一些使用srgb色彩空间。srgb文件没有任何问题,但eci文件看起来比以前有点无色。当我上传透明图像时,它并不完全透明。有没有什么解决方案?当我调整png图像大小时,我使用以下额外函数。

private function imagetranstowhite($trans) {
    // Create a new true color image with the same size
    $w = imagesx($trans);
    $h = imagesy($trans);
    $white = imagecreatetruecolor($w, $h);

    // Fill the new image with white background
    $bg = imagecolorallocate($white, 255, 255, 255);
    imagefill($white, 0, 0, $bg);

    // Copy original transparent image onto the new image
    imagecopy($white, $trans, 0, 0, 0, 0, $w, $h);

    return $white;
}

有没有解决方案?使用Imagemagick代替gdlib也可以。

可能是https://dev59.com/b2Qn5IYBdhLWcg3wP1NU的重复问题。 - Utkarsh Dixit
2个回答

0

对于将来遇到同样问题的人。我解决了这个问题,停止使用imagegd并切换到ImageMagick。所有图片仍然是透明的,您可以轻松地使用正确的ICC配置文件将CMYK图像转换为sRGB。


-2
不要在虚拟环境中将PNG图像放大。相反,从一开始就使用所需的最大分辨率创建PNG图像,然后根据需要进行虚拟缩小。这样,您就可以保持PNG图像的分辨率,并且以后再也不必处理它。这是最快、最简单和最佳的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接