在使用 CodeIgniter(CI)框架进行开发时,你可以通过以下步骤实现从图像库中随机选取图片,生成三种规格的头像,并将其中一个规格的头像地址写入 user 表的 url 字段。假设你有一个名为 images 的目录存放图像库,并且你使用 CI 的模型、控制器和视图架构来完成这个任务。
1. 目录结构确保你的项目目录结构如下:
application/
controllers/
User.php
models/
User_model.php
...
assets/
images/
library/
image1.jpg
image2.jpg
...
...
2. 控制器 (User.php)在控制器中编写逻辑来随机选择图片并生成头像。
defined('basePATH') OR exit('No direct script access allowed');
class User extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('User_model');
$this->load->helper('file');
}
public function generate_avatars() {
// 获取图像库路径
$imageDir = FCPATH . 'assets/images/library/';
// 获取图像库中的所有图片
$images = get_filenames($imageDir);
// 随机选择一张图片
$randomImage = $images[array_rand($images)];
// 图片路径
$sourceImagePath = $imageDir . $randomImage;
// 生成三种规格的头像
$this->generate_thumbnail($sourceImagePath, $imageDir, 100, 100, 'small_');
$this->generate_thumbnail($sourceImagePath, $imageDir, 200, 200, 'medium_');
$this->generate_thumbnail($sourceImagePath, $imageDir, 300, 300, 'large_');
// 选择一个规格的头像地址写入数据库(例如:中等规格)
$avatarUrl = base_url() . 'assets/images/library/medium_' . $randomImage;
// 写入数据库
$userId = 1; // 假设用户ID为1,你可以根据实际情况调整
$this->User_model->update_user_avatar($userId, $avatarUrl);
echo "Avatar generated and URL updated successfully!";
}
private function generate_thumbnail($sourcePath, $destinationDir, $width, $height, $prefix) {
// 加载CI的image_lib库
$this->load->library('image_lib');
// 配置缩略图参数
$config['image_library'] = 'gd2';
$config['source_image'] = $sourcePath;
$config['new_image'] = $destinationDir . $prefix . basename($sourcePath);
$config['maintain_ratio'] = FALSE;
$config['width'] = $width;
$config['height'] = $height;
// 初始化image_lib并生成缩略图
$this->image_lib->initialize($config);
$this->image_lib->resize();
}
}
?>
3. 模型 (User_model.php)在模型中编写更新用户头像URL的方法。
defined('basePATH') OR exit('No direct script access allowed');
class User_model extends CI_Model {
public function update_user_avatar($userId, $avatarUrl) {
$data = array(
'url' => $avatarUrl
);
$this->db->where('id', $userId);
$this->db->update('user', $data);
}
}
?>
4. 数据库配置确保你的 user 表有一个 url 字段来存储头像地址。
5.实现效果
共 0 次
打赏名单
感觉不错
这太水吧