在 PHP 中,可以使用 GD 库制作图片,包括生成验证码、缩放图片等。以下是一些常见的制作图片的示例代码: 1. 生成验证码图片 ```php session_start(); $width = 100; // 图片宽度 $height = 40; // 图片高度 $length = 4; // 验证码长度 // 生成随机验证码 $code = ''; for ($i = 0; $i < $length; $i++) { $code .= chr(mt_rand(97, 122)); // 生成随机小写字母 } // 保存验证码到 session 中 $_SESSION['captcha'] = $code; // 创建画布 $image = imagecreatetruecolor($width, $height); // 填充背景色 $bg_color = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $bg_color); // 绘制验证码 $text_color = imagecolorallocate($image, 0, 0, 0); imagestring($image, 5, 25, 10, $code, $text_color); // 输出验证码图片 header('Content-type: image/png'); imagepng($image); // 释放内存 imagedestroy($image); ``` 在上面的代码中,首先生成随机验证码,并将验证码保存到 session 中。然后创建画布,填充背景色,绘制验证码,最后输出验证码图片。需要注意的是,验证码图片的 MIME 类型为 image/png。 2. 缩放图片 ```php $src_file = 'source.jpg'; // 原始图片文件名 $dst_file = 'destination.jpg'; // 缩放后的图片文件名 $max_width = 400; // 缩放后的最大宽度 $max_height = 400; // 缩放后的最大高度 // 获取原始图片的信息 $src_info = getimagesize($src_file); $src_width = $src_info[0]; $src_height = $src_info[1]; $src_mime = $src_info['mime']; // 计算缩放后的图片尺寸 if ($src_width <= $max_width && $src_height <= $max_height) { $dst_width = $src_width; $dst_height = $src_height; } else { $ratio = min($max_width / $src_width, $max_height / $src_height); $dst_width = $src_width * $ratio; $dst_height = $src_height * $ratio; } // 创建缩放后的图片 $dst_image = imagecreatetruecolor($dst_width, $dst_height); // 读取原始图片 $src_image = null; switch ($src_mime) { case 'image/jpeg': $src_image = imagecreatefromjpeg($src_file); break; case 'image/png': $src_image = imagecreatefrompng($src_file); break; case 'image/gif': $src_image = imagecreatefromgif($src_file); break; default: die('Unsupported image type'); } // 缩放原始图片到目标图片 imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height); // 输出缩放后的图片 switch ($src_mime) { case 'image/jpeg': imagejpeg($dst_image, $dst_file); break; case 'image/png': imagepng($dst_image, $dst_file); break; case 'image/gif': imagegif($dst_image, $dst_file); break; default: die('Unsupported image type'); } // 释放内存 imagedestroy($src_image); imagedestroy($dst_image); ``` 在上面的代码中,首先获取原始图片的信息,计算缩放后的图片尺寸。然后创建缩放后的图片,读取原始图片,缩放原始图片到目标图片,最后输出缩放后的图片。需要注意的是,缩放后的图片的 MIME 类型与原始图片的 MIME 类型相同。