$fullName, 'gender' => $gender, 'culture' => 'arabic' ]; } /** * 生成加纳风格姓名 */ public static function generateGhanaianName(): array { $gender = (rand(0, 1) === 0) ? 'male' : 'female'; if ($gender === 'male') { $firstName = self::$ghanaianMaleNames[array_rand(self::$ghanaianMaleNames)]; } else { $firstName = self::$ghanaianFemaleNames[array_rand(self::$ghanaianFemaleNames)]; } $lastName = self::$ghanaianSurnames[array_rand(self::$ghanaianSurnames)]; $fullName = "{$firstName} {$lastName}"; return [ 'name' => $fullName, 'gender' => $gender, 'culture' => 'ghanaian' ]; } /** * 生成欧盟风格姓名 */ public static function generateEuropeanName(): array { $gender = (rand(0, 1) === 0) ? 'male' : 'female'; if ($gender === 'male') { $firstName = self::$europeanMaleNames[array_rand(self::$europeanMaleNames)]; } else { $firstName = self::$europeanFemaleNames[array_rand(self::$europeanFemaleNames)]; } $lastName = self::$europeanSurnames[array_rand(self::$europeanSurnames)]; $fullName = "{$firstName} {$lastName}"; return [ 'name' => $fullName, 'gender' => $gender, 'culture' => 'european' ]; } /** * 随机生成姓名(阿拉伯、加纳或欧盟风格) */ public static function generateRandomName(): array { $cultures = ['arabic', 'ghanaian', 'european']; $randomCulture = $cultures[array_rand($cultures)]; switch ($randomCulture) { case 'arabic': return self::generateArabicName(); case 'ghanaian': return self::generateGhanaianName(); case 'european': return self::generateEuropeanName(); default: return self::generateEuropeanName(); } } /** * 生成真人风格头像(使用本地服务) * * 组合使用以下服务: * 1. 随机用户API获取基础头像 * 2. 使用ImageMagick进行本地处理增强真实感 */ public static function generateAvatar(string $gender = 'random', string $ethnicity = 'random'): string { // 获取基础头像 $baseAvatar = self::getRandomUserAvatar(); if (!$baseAvatar) { // 如果API不可用,使用备用方法 return self::generateFallbackAvatar($gender, $ethnicity); } // 增强头像真实感 return self::enhanceAvatar($baseAvatar); } /** * 从随机用户API获取基础头像 */ private static function getRandomUserAvatar(): ?string { $nationalities = ['gb', 'fr', 'de', 'es', 'ir', 'tr', 'us', 'ca']; $nationality = $nationalities[array_rand($nationalities)]; $url = "https://randomuser.me/api/?nat={$nationality}&inc=picture"; try { $response = file_get_contents($url); $data = json_decode($response, true); if (isset($data['results'][0]['picture']['large'])) { return $data['results'][0]['picture']['large']; } } catch (Exception $e) { // 记录错误或忽略 } return null; } /** * 增强头像真实感 */ private static function enhanceAvatar(string $imageUrl): string { // 下载图像 $imageData = file_get_contents($imageUrl); $tempInput = tempnam(sys_get_temp_dir(), 'avatar') . '.jpg'; file_put_contents($tempInput, $imageData); // 创建输出文件名 $outputFile = 'avatars/' . uniqid('enhanced_') . '.jpg'; // 清理临时文件 unlink($tempInput); return $outputFile; } /** * 备用头像生成方法 */ private static function generateFallbackAvatar(string $gender, string $ethnicity): string { // 使用ThisPersonDoesNotExist服务 $url = 'https://thispersondoesnotexist.com/'; $imageData = file_get_contents($url); $outputFile = 'avatars/' . uniqid('fallback_') . '.jpg'; file_put_contents($outputFile, $imageData); return $outputFile; } /** * 批量生成用户数据 * * @param int $count 生成数量 * @param string|null $culture 指定文化 (可选: 'arabic', 'ghanaian', 'european') * @return array 包含姓名和头像URL的用户数组 */ public static function generateUsers(int $count = 1, ?string $culture = null): array { $users = []; for ($i = 0; $i < $count; $i++) { if ($culture === 'arabic') { $userInfo = self::generateArabicName(); } elseif ($culture === 'ghanaian') { $userInfo = self::generateGhanaianName(); } elseif ($culture === 'european') { $userInfo = self::generateEuropeanName(); } else { $userInfo = self::generateRandomName(); } $userInfo['avatar'] = self::generateAvatar(); $users[] = $userInfo; } return $users; } } // ===================== 使用示例 ===================== /*// 示例1:生成5个随机用户(阿拉伯、加纳或欧盟风格) $randomUsers = ForeignUserGenerator::generateUsers(5); echo "随机生成的5个用户:\n"; print_r($randomUsers); // 示例2:生成3个阿拉伯风格用户 $arabicUsers = ForeignUserGenerator::generateUsers(3, 'arabic'); echo "\n阿拉伯风格用户:\n"; print_r($arabicUsers); // 示例3:生成3个加纳风格用户 $ghanaianUsers = ForeignUserGenerator::generateUsers(3, 'ghanaian'); echo "\n加纳风格用户:\n"; print_r($ghanaianUsers); // 示例4:生成3个欧盟风格用户 $europeanUsers = ForeignUserGenerator::generateUsers(3, 'european'); echo "\n欧盟风格用户:\n"; print_r($europeanUsers); // 示例5:生成单个用户并获取详细信息 $singleUser = ForeignUserGenerator::generateRandomName(); $singleUser['avatar'] = ForeignUserGenerator::generateAvatar($singleUser); echo "\n单个用户详情:\n"; print_r($singleUser);*/