以下是一个简单的PHP黑白滤镜实现的示例。这个示例将展示如何使用PHP的GD库来对图像进行黑白处理。
```php

// 载入图像
$image = imagecreatefromjpeg('example.jpg');
// 获取图像宽度和高度
$width = imagesx($image);
$height = imagesy($image);
// 创建一个新图像用于存储黑白图像
$blackAndWhiteImage = imagecreatetruecolor($width, $height);
// 获取原始图像的像素数据
$colors = imagecolorsforindex($image, imagecolorat($image, 0, 0));
// 遍历每个像素并转换为黑白
for ($y = 0; $y < $height; $y++) {
for ($x = 0; $x < $width; $x++) {
// 获取当前像素的RGB值
$currentColor = imagecolorat($image, $x, $y);
$red = ($currentColor >> 16) & 0xFF;
$green = ($currentColor >> 8) & 0xFF;
$blue = $currentColor & 0xFF;
// 计算灰度值
$gray = ($red * 0.3) + ($green * 0.59) + ($blue * 0.11);
// 设置黑白图像的像素
$newColor = imagecolorallocate($blackAndWhiteImage, $gray, $gray, $gray);
imagesetpixel($blackAndWhiteImage, $x, $y, $newColor);
}
}
// 输出黑白图像
header('Content-Type: image/jpeg');
imagejpeg($blackAndWhiteImage);
// 释放内存
imagedestroy($image);
imagedestroy($blackAndWhiteImage);
>
```
表格说明
| 函数/操作 | 描述 |
|---|---|
| `imagecreatefromjpeg()` | 从JPEG文件创建一个新的图像资源 |
| `imagesx()` | 获取图像的宽度 |
| `imagesy()` | 获取图像的高度 |
| `imagecreatetruecolor()` | 创建一个真彩色图像 |
| `imagecolorsforindex()` | 获取图像颜色索引的RGB值 |
| `imagecolorat()` | 获取图像指定位置的像素颜色 |
| `imagecolorallocate()` | 分配一个颜色 |
| `imagesetpixel()` | 在图像上设置一个像素 |
| `header()` | 发送原始的HTTP头部信息 |
| `imagejpeg()` | 输出JPEG图像 |
| `imagedestroy()` | 释放图像占用的内存 |
这个示例展示了如何使用PHP的GD库将一个JPEG图像转换为黑白图像。通过调整灰度计算公式,你可以改变黑白转换的效果。









