使用PHP在浏览器上将PNG-24重新渲染为PNG-8


Using PHP to re-render PNG-24 to PNG-8 on browsers?

是否有一个PHP函数可以接受PNG-24的图像路径作为参数,然后在web浏览器上返回PNG-8版本?

例如,原始PNG-24的HTML代码是:

<img src="image/path/lorem.png">

然后这将在网络浏览器上返回PNG-8版本:

<img src="convert-png24-to-pnp8.php?image/path/lorem.png">

我想转换的PNG-24图像没有半透明像素,但有完全透明的像素。

基于SERPRO的上述答案,使用ImageMagick可以执行以下操作:

$image = new Imagick("mypng24.png");
$image->setImageFormat("png8");
header( "Content-Type: image/png" );
echo $image;

这是未经测试的,但应该会给你一些东西。ImageMagick可以导出的格式如下所示:http://www.imagemagick.org/script/formats.php

您可以使用ImageMagick转换图像。

将PNG-24转换为PNG-8:http://www.whoisgregg.com/imagemagick/index.html

如果你可以调用shell,那么你可以使用pngquant来完成这项工作。这将(批量)为您将PNG-24转换为PNG-8。

http://pngquant.org/