我正在尝试为用户上传个人资料照片时创建个人资料缩略图。我在这里看到一些帮助,因为最近我把手放在Codeiniter上,我也是php的新手。
目前,这会将配置文件图像插入“temp”文件夹,但不会调整其大小。我可能做错了。我是否必须为缩略图创建一个新功能,或者我可以将它与我拥有的功能一起包括在内?
添加新的个人资料图片没问题。添加新图片时替换图片并自动删除图片图片。只是图像的大小调整(缩略图)。
这是控制器:
public function profile_image() {
if($this->session->userdata('is_logged_in')){
$username = $this->session->userdata('v_member_username');
$url1 = $this->my_profile_model->see_if_old_image_exists($username);
if (empty($_FILES['profile_image']['tmp_name'])) {
return true;
}else{
$url2 = $this->do_upload();
$this->my_profile_model->update_profile_image($url2, $username);
if(!empty($url1)){
$this->my_profile_model->delete_old_profile_image($url1);
}
}
}
}
private function do_upload() {
$type = explode('.', $_FILES['profile_image']['name']);
$type = $type[count($type)-1];
$filename = uniqid(rand()).'.'.$type;
$url2 = './uploads/temp/'.$filename;
if(in_array($type, array('jpeg', 'gif', 'png', 'jpg')))
if (empty($_FILES['profile_image']['tmp_name'])) {
return TRUE;
}else{
if(is_uploaded_file($_FILES['profile_image']['tmp_name']))
if(move_uploaded_file($_FILES['profile_image']['tmp_name'], $url2));
return $url2;
return '';
// do_thumb
$this->load->library('image_lib');
$source_path = $_SERVER['DOCUMENT_ROOT'] . 'uploads/temp/' . $filename;
$target_path = $_SERVER['DOCUMENT_ROOT'] . 'uploads/profile/';
$config_manip = array(
'image_library' => 'gd2',
'source_image' => $source_path,
'new_image' => $target_path,
'maintain_ratio' => TRUE,
'create_thumb' => TRUE,
'thumb_marker' => '_thumb',
'width' => 270,
'height' => 263
);
$this->load->library('image_lib', $config_manip);
if (!$this->image_lib->resize()) {
echo $this->image_lib->display_errors();
}
// clear //
$this->image_lib->clear();
}
}
我的模特是:
// Update profile Image
function update_profile_image($url2, $username){
$this->db->set('profile_image', $url2);
$this->db->where('v_member_username', $username);
$this->db->update('vbc_registered_members');
}
// Look If There Was Any Old Image Earlier
function see_if_old_image_exists($username) {
$this->db->select('profile_image');
$this->db->from('vbc_registered_members');
$this->db->where('v_member_username', $username);
$query = $this->db->get();
$query_result = $query->result();
$row = $query_result[0];
return $row->profile_image;
}
// Auto Delete profile Image From Upload Folder On Updating New Image
function delete_old_profile_image($url1) {
unlink($url1);
return TRUE;
}
请告知。
答案 0 :(得分:1)
Codeigniter提供了一个用于上传数据的库。 请参阅File Upload Library和Image Library
这是我用于上传图片,创建缩略图+调整图片大小的代码
/*
* This function returns the path of imagemagick on your system
*/
public static function getLibPath()
{
if(strlen(self::$_lib_path)==0)
{
self::$_lib_path=exec("/bin/bash -lc '/usr/bin/which convert'",$out,$rcode);
}
return self::$_lib_path;
}
/*
* This function handles the upload and calls the resizeImage function
* to generate the thumbnail and the resized image
*/
public function update()
{
$config['upload_path'] = 'your upload path';
$config['allowed_types'] = 'jpg|png|bmp';
$config['max_size'] = '8192';//8mb //4096kb - 4mb
$config['max_width'] = '0';
$config['max_height'] = '0';
$config['overwrite'] = false;
$config['encrypt_name']=true;//this generates a filename for you
$this->load->library('upload', $config);
$result = $this->upload->do_upload();
if($result) {
$fileInfo=$this->upload->data();
$this->resizeImage($fileInfo['full_path']);
$data = array(
'filename' => $fileInfo['file_name'],
'orig_file_name' =>$fileInfo['orig_name'],
);
//pseudo function for storing the file info
save_metadata_to_db($data);
}
else
{
echo $this->upload->display_errors());
}
}
/*
* This function creates a thumbnail + the resized image
*/
private function resizeImage($filename)
{
//This function creates a file with the orig. filename + _thumb
$config['image_library'] = 'ImageMagick';
$config['source_image'] = $filename;
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = FALSE;
$config['width'] = 60;
$config['height'] = 60;
$config['library_path'] = $this->getLibPath();
$config['quality'] = '100%';
$this->load->library('image_lib', $config);
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors());
}
$config['create_thumb'] = False;
$config['maintain_ratio'] = TRUE;
$config['width'] = 1080;
$config['height'] = 1920;
$this->image_lib->initialize($config);
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors());
}
}