PHP 降低所有图像类型的质量

标签 php image compression image-compression

<分区>

我正在寻找一个可以降低所有图像类型质量(PNG、GIF 和 JPEG)的库。
我知道我可以使用 imagejpeg()
减少 JPEG 我也知道我可以使用 imagepng() 减少 PNG,尽管这还不够强大。

我需要可以在不移除 alpha 的情况下将 PNG 24 转换为 PNG8 的东西。

无法使用 ImageMagick,因为我无法在我的服务器上安装任何东西。

编辑:
我还需要一些可以从 32 位转换为 8 位的东西(我很确定这与 32 位相同)

找到灵魂here

谢谢

最佳答案

要将任何 PNG 图像转换为 8 位 PNG,请使用我刚刚创建的这个函数

function convertPNGto8bitPNG()

  function convertPNGto8bitPNG($sourcePath, $destPath) {
    $srcimage = imagecreatefrompng($sourcePath);
    list($width, $height) = getimagesize($sourcePath);
    $img = imagecreatetruecolor($width, $height);
    $bga = imagecolorallocatealpha($img, 0, 0, 0, 127);
    imagecolortransparent($img, $bga);
    imagefill($img, 0, 0, $bga);
    imagecopy($img, $srcimage, 0, 0, 0, 0, $width, $height);
    imagetruecolortopalette($img, false, 255);
    imagesavealpha($img, true);
    imagepng($img, $destPath);
    imagedestroy($img);
    }

参数

$sourcePath - 源 PNG 文件的路径 $destPath - 目标 PNG 文件的路径 用法

convertPNGto8bitPNG('pfc.png', 'pfc8bit.png');

关于PHP 降低所有图像类型的质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13768034/

相关文章:

php - 使用 php foreach 创建 javascript 对象

javascript - 图像 Base64 字符串到 Uint8ClampedArray

linux - 是否有用于估计压缩后文件大小的实用程序?

单击按钮时 PHP 问题更新数据库

php - 电子邮件主题中出现英镑符号前面的额外字符 â £

php - MySQL 查询内部查询的最有效方法

html - 如何在不使用javascript的情况下设置默认图像宽度的1/2

c++ - 使用二进制(每像素 1 位)图像 C++

java - 跨平台文件压缩

algorithm - 压缩到固定长度