在PHP和GD库的组合中,可以利用GD库提供的各种功能来创建丰富的交互效果,除了绘制基本图形外,还可以通过添加滤镜、文字等元素来为Web应用添加视觉效果,下面是一些示例代码,演示如何使用GD库为图片添加模糊效果:
<?php // 引入GD库头文件 header('Content-Type: image/png'); // 创建一个宽度为100像素,高度为50像素的空白图片 $image = imagecreatetruecolor(100, 50); // 为图片设置背景色 $bg_color = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $bg_color); // 在图片上绘制一个红色矩形 $red_color = imagecolorallocate($image, 255, 0, 0); imagerectangle($image, 20, 20, 60, 40, $red_color); // 为图片添加模糊效果 $blur_radius = 5; // 模糊半径 for ($x = 0; $x < $blur_radius; $x++) { for ($y = 0; $y < $blur_radius; $y++) { $rgba = imagecolorat($image, $x + $blur_radius / 2, $y + $blur_radius / 2); $alpha = ($rgba >> 24) & 0xFF; // 获取透明度值 if ($alpha > 127) { // 如果透明度大于127(即不透明),则继续模糊处理 $new_rgba = imagecolorallocatealpha($image, $rgba >> 16 & 0xFF, $rgba >> 8 & 0xFF, $rgba & 0xFF, $alpha); imagesetpixel($image, $x + $blur_radius / 2, $y + $blur_radius / 2, $new_rgba); } elseif ($alpha > 63) { // 如果透明度大于63(即半透明),则降低透明度后再模糊处理 $new_alpha = (int)(($alpha * (127 - $blur_radius)) >> 8); // 根据模糊半径计算新的透明度值 $new_rgba = imagecolorallocatealpha($image, $rgba >> 16 & 0xFF, $rgba >> 8 & 0xFF, $rgba & 0xFF, $new_alpha); imagesetpixel($image, $x + $blur_radius / 2, $y + $blur_radius / 2, $new_rgba); } elseif ($alpha > 31) { // 如果透明度大于31(即微透明),则直接模糊处理 imagesetpixel($image, $x + $blur_radius / 2, $y + $blur_radius / 2, imagecolorallocatealpha($image, $rgba >> 16 & 0xFF, $rgba >> 8 & 0xFF, $rgba & 0xFF)); } elseif ($alpha > 1) { // 如果透明度大于1(即完全透明),则直接覆盖原图像素值 imagesetpixel($image, $x + $blur_radius /
还没有评论,来说两句吧...