繁体   English   中英

在不损失质量和透明度的情况下调整PNG的大小

[英]Resize PNG without losing quality and transparency

我必须调整图像大小,因为我们上传了可打印的高分辨率图像,并且预览时人们不需要4000px +的图像。 一些使用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也可以。

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

实际上,不要使PNG更大。 取而代之的是,从所需的PNG分辨率开始,然后根据需要缩小分辨率。 这样一来,您就可以将分辨率保持在PNG上,而在此之后再也不必再搞砸了。 这是最快,最简单,最好的解决方案。

暂无
暂无

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

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