/**
 * 压缩并替换指定路径的图片文件
 *
 * @param string $path 图片文件路径
 * @param int $quality 压缩质量(0-100)
 * @return bool 成功返回 true,失败返回 false
 */
function compressAndReplaceImage($path, $quality = 80)
{
    $size = filesize($path);
    if ($size < 1024 * 1024) {
        //小于1mb不压缩
        return true;
    }
    // 获取图片信息
    list($width, $height, $type) = getimagesize($path);

    switch ($type) {
        case IMAGETYPE_JPEG:
            // 载入 JPEG 文件
            $src = @imagecreatefromjpeg($path);
            // 针对 JPEG 文件进行压缩
            imagejpeg($src, $path, $quality);
            break;
        case IMAGETYPE_PNG:
            // 载入 PNG 文件
            $src = imagecreatefrompng($path);
            // 取消 alpha 通道,并增加像素边缘以防止出现黑色边框
            imagealphablending($src, false);
            imagesavealpha($src, true);
            $transparent = imagecolorallocatealpha($src, 255, 255, 255, 127);
            imagefilledrectangle($src, 0, 0, $width, $height, $transparent);
            // 针对 PNG 文件进行压缩
            imagepng($src, $path, 9);
            break;
        case IMAGETYPE_GIF:
            // 载入 GIF 文件
            $src = imagecreatefromgif($path);
            // 针对 GIF 文件进行压缩
            imagegif($src, $path);
            break;
        default:
            // 不是支持的图片类型
            return false;
    }

    imagedestroy($src);

    return true;
}