🎨 PHP 常见特效代码集合(可直接复制版)

📅 2026-07-24 👍 0点赞 💬 0 条评论

1️⃣ 动态生成验证码(经典中的经典)

这是 PHP 最标志性的“特效”,利用 GD 库实时绘制图片并输出到浏览器。
<?php
session_start();
header('Content-Type: image/png');

// 创建画布
$width = 120;
$height = 40;
$image = imagecreatetruecolor($width, $height);

// 定义颜色
$bgColor = imagecolorallocate($image, 240, 240, 240);
$textColor = imagecolorallocate($image, 30, 30, 30);
$lineColor = imagecolorallocate($image, 200, 200, 200);

imagefill($image, 0, 0, $bgColor);

// 生成随机码
$code = substr(str_shuffle('ABCDEFGHJKLMNPQRSTUVWXYZ23456789'), 0, 4);
$_SESSION['captcha'] = $code;

// 画干扰线
for ($i = 0; $i < 5; $i++) {
    imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $lineColor);
}

// 写入文字
$fontSize = 20;
$x = 15;
foreach (str_split($code) as $char) {
    imagestring($image, $fontSize, $x, rand(5, 15), $char, $textColor);
    $x += 25;
}

imagepng($image);
imagedestroy($image);
?>
✨ 特效说明:直接在浏览器中显示一个 PNG 图片,无需存储本地文件。

2️⃣ 生成圆角头像/缩略图

这也是非常常见的图像处理特效,常用于社交网站。
<?php
function generateRoundedAvatar($sourcePath, $destPath, $size = 200) {
    $source = imagecreatefromjpeg($sourcePath);
    $w = imagesx($source);
    $h = imagesy($source);

    // 创建正方形画布
    $mask = imagecreatetruecolor($size, $size);
    $transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127);
    imagefill($mask, 0, 0, $transparent);

    // 画一个圆
    $black = imagecolorallocate($mask, 0, 0, 0);
    imagefilledellipse($mask, $size / 2, $size / 2, $size, $size, $black);

    // 创建目标画布
    $avatar = imagecreatetruecolor($size, $size);
    imagesavealpha($avatar, true);
    imagefill($avatar, 0, 0, $transparent);

    // 拷贝并裁剪成圆形
    imagecopyresampled($avatar, $source, 0, 0, 0, 0, $size, $size, $w, $h);
    
    // 应用遮罩(关键步骤)
    for ($x = 0; $x < $size; $x++) {
        for ($y = 0; $y < $size; $y++) {
            $rgb = imagecolorat($mask, $x, $y);
            if (($rgb & 0xFF000000) >> 24 == 127) {
                imagesetpixel($avatar, $x, $y, $transparent);
            }
        }
    }

    imagepng($avatar, $destPath);
    imagedestroy($source);
    imagedestroy($mask);
    imagedestroy($avatar);
}

// 使用示例
generateRoundedAvatar('input.jpg', 'avatar.png');
echo "圆角头像生成完毕!";
?>

3️⃣ CLI 终端彩色进度条

如果你在服务器命令行下操作,这个特效非常酷炫。
<?php
/**
 * 终端彩色进度条
 */
function showProgress($total) {
    echo "Processing:\n";
    for ($i = 0; $i <= $total; $i++) {
        $percent = round(($i / $total) * 100);
        $barLen = 50;
        $filled = floor(($percent / 100) * $barLen);
        
        // ANSI 颜色代码
        $green = "\033[32m";
        $reset = "\033[0m";
        $bold = "\033[1m";
        
        $bar = str_repeat("█", $filled) . str_repeat("░", $barLen - $filled);
        
        printf("\r%s[%s] %s%d%%%s", $bold, $bar, $green, $percent, $reset);
        usleep(100000); // 模拟耗时
    }
    echo "\nDone!\n";
}

// 运行
showProgress(100);
?>
✨ 特效说明:在 SSH 终端中会出现一个动态增长的绿色进度条。

4️⃣ 生成数据可视化 ASCII 图表

不需要前端 JS,后端直接用字符画图。
<?php
function asciiBarChart($data) {
    $max = max($data);
    $chart = "";
    
    foreach ($data as $label => $value) {
        $len = round(($value / $max) * 30);
        $bar = str_repeat("▓", $len);
        $chart .= sprintf("%-10s | %-35s | %d\n", $label, $bar, $value);
    }
    return $chart;
}

// 示例数据
$sales = [
    '一月' => 120,
    '二月' => 90,
    '三月' => 150,
    '四月' => 80,
    '五月' => 200
];

echo "📊 销售柱状图\n";
echo asciiBarChart($sales);
?>
输出效果:
📊 销售柱状图
一月       | ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓             | 120
二月       | ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓                   | 90
三月       | ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓          | 150
四月       | ▓▓▓▓▓▓▓▓▓▓▓▓▓▓                       | 80
五月       | ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓      | 200

5️⃣ 实时刷新服务器的“黑客感”监控页面

利用 PHP 的 flush()sleep() 实现实时效果。
<?php
header('Content-Type: text/html; charset=utf-8');
echo "<pre style='background:#000; color:#0f0; font-size:14px; padding:20px;'>";
echo "Initializing System...\n";

$logs = [
    "[OK] Database connected.",
    "[OK] Cache warmed up.",
    "[WARN] High memory usage detected.",
    "[OK] User session restored.",
    "[INFO] Starting background tasks...",
    "[OK] System Ready."
];

foreach ($logs as $log) {
    echo $log . PHP_EOL;
    flush(); // 强制输出到浏览器
    usleep(500000); // 暂停 0.5 秒
}

echo "\n>> Listening for events...\n";
for ($i = 0; $i < 5; $i++) {
    echo "Heartbeat: " . date('H:i:s') . "\n";
    flush();
    sleep(1);
}
echo "</pre>";
?>

6️⃣ 文件上传带进度(模拟)

虽然现代 PHP 有更好的方式,但这个经典写法依然很有教学意义。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
    $file = $_FILES['file'];
    
    // 模拟上传过程
    echo "<h3>Uploading...</h3><div style='width:300px;border:1px solid #ccc;'>";
    for ($i = 0; $i <= 100; $i += 10) {
        echo "<script>
            document.write('<div style=\"width:{$i}%; height:20px; background:#4CAF50;\"></div>');
        </script>";
        flush();
        usleep(200000);
    }
    
    // 移动文件
    move_uploaded_file($file['tmp_name'], 'uploads/' . basename($file['name']));
    echo "<p>✅ Upload Complete!</p>";
}
?>

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="file" required>
    <button type="submit">Upload</button>
</form>

📋 总结表格

特效名称 核心技术 适用场景
验证码 GD 库绘图 登录验证
圆角头像 图像遮罩 社交/CMS
终端进度条 ANSI Escape Code CLI 工具
ASCII 图表 字符串拼接 服务器状态页
实时日志流 flush() 部署脚本/监控

💡 提示:运行这些代码前,请确保 PHP 已安装 GD 扩展(php-gd),并且 Web 服务器有权限读写文件。
需要我针对其中某一个特效(比如 图片水印二维码生成)做更详细的拆解吗?😊

要不要我再补充几个动态生成海报二维码的特效代码,让你的项目功能更丰富?

 

💬 评论列表 (0)

暂无评论,快来抢沙发吧!

发表评论

× 大图