Php 如何在codeignite中调整大小并创建其他缩略图?
我无法调整在上载模块中成功上载的照片的大小 我可以上传照片到适当的文件夹,但是我的大小调整不起作用,我还想同时在同一文件夹中创建一个缩略图副本Php 如何在codeignite中调整大小并创建其他缩略图?,php,codeigniter,upload,thumbnails,Php,Codeigniter,Upload,Thumbnails,我无法调整在上载模块中成功上载的照片的大小 我可以上传照片到适当的文件夹,但是我的大小调整不起作用,我还想同时在同一文件夹中创建一个缩略图副本 public function upload() { $this->load->library('session'); $this->load->helper('url'); $session_id = $this->session->userdata('id')
public function upload()
{
$this->load->library('session');
$this->load->helper('url');
$session_id = $this->session->userdata('id');
$this->load->model('account_model');
$user = $this->account_model->user();
$data['user'] = $user;
echo $user['id'];
$user_folder = './uploads/' . $this->session->userdata('id');
if(!is_dir($user_folder)){
mkdir($user_folder, 0777);
}
$config['image_library'] = 'gd2';
$config['source_image'] = $user_folder;
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 50;
$config['height'] = 50;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
$config['upload_path'] = $user_folder;
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '165';
$config['max_width'] = '165';
$config['max_height'] = '165';
$config['overwrite'] = TRUE;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$data['main_content'] = '/account/upload';
$this->load->view('includes/templates/main_page_template', $data);
}
else
{
$data = array('upload_data' => $this->upload->data());
$data['main_content'] = '/account/success';
$this->load->view('includes/templates/main_page_template', $data);
}
}
您可能需要将源映像的完整路径传递给服务器上的映像。因此,如果您试图使用/uploads,则可能需要将其设置为/var/www/html/uploads或该文件夹的任何完整路径,因为图像处理是相对于服务器的,而不是相对于站点url的,请尝试以下操作:
public function upload()
{
$this->load->library('session');
$this->load->helper('url');
$session_id = $this->session->userdata('id');
$this->load->model('account_model');
$user = $this->account_model->user();
$data['user'] = $user;
echo $user['id'];
$user_folder = './uploads/' . $this->session->userdata('id');
if(!is_dir($user_folder)){
mkdir($user_folder, 0777);
}
$this->load->library('image_lib'); #load the image manipulation library without initiatlising it here.
$configThumb['image_library'] = 'gd2';
//$configThumb['source_image'] = $user_folder;
$configThumb['create_thumb'] = TRUE;
$configThumb['maintain_ratio'] = TRUE;
$configThumb['width'] = 50;
$configThumb['height'] = 50;
//$this->image_lib->resize();
$config['upload_path'] = $user_folder;
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '165';
$config['max_width'] = '165';
$config['max_height'] = '165';
$config['overwrite'] = TRUE;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$data['main_content'] = '/account/upload';
$this->load->view('includes/templates/main_page_template', $data);
}
else
{
$configThumb['source_image'] = $uploadedDetails['full_path'];
$this->image_lib->initialize($configThumb); #initialize the library here
$this->image_lib->resize(); #resize is done here
$data = array('upload_data' => $this->upload->data());
$data['main_content'] = '/account/success';
$this->load->view('includes/templates/main_page_template', $data);
}
}
完整路径是指上载到服务器的源映像。查看其他条件,您将获得想法。现在,更改是我们正在加载库并在上载图像后初始化它,因此我们从$this->upload->data()
获得完整路径
编辑:我的工作功能是将图像裁剪成两种不同的大小
function udpate_profile($userId = 0){
$data = array();
//echo "<pre>";print_r($_POST);echo "</pre>";
/* Upload Image */
if($_FILES['image']['name'] != ""){
//echo "<pre>";print_r($_FILES);echo "</pre>";
//echo "enter";die;
/* Check if previous file exists */
$chkRs = $this->db->select('image')->where('id', $this->session->userdata['logged_user']['id'])->get('admins');
//echo $this->db->last_query();die;
if($chkRs->num_rows() > 0){
$chkD = $chkRs->row_array();
if($chkD['image'] != ""){
### delete the previous image ###
$pathActual = './profile_images/';
$pathMedium = './profile_images/medium/';
$pathThumb = './profile_images/thumbs/';
if(file_exists($pathActual.$chkD['image'])){ #delete the actual image
unlink($pathActual.$chkD['image']);
}
if(file_exists($pathMedium.$chkD['image'])){ #delete the medium image
unlink($pathMedium.$chkD['image']);
}
if(file_exists($pathThumb.$chkD['image'])){ #delete the thumb image
unlink($pathThumb.$chkD['image']);
}
### delete the previous image ###
}
}
/* Check if previous file exists */
//print_r($_FILES['image']);die;
$this->load->library('image_lib');
$configUpload['upload_path'] = './profile_images/';
$configUpload['allowed_types'] = 'gif|jpg|png|bmp|jpeg';
$configUpload['max_size'] = '0';
$configUpload['max_width'] = '0';
$configUpload['max_height'] = '0';
$configUpload['encrypt_name'] = true;
$this->load->library('upload', $configUpload);
/* size 64*72 for comments */
$configThumb = array();
$configThumb['image_library'] = 'gd2';
$configThumb['create_thumb'] = TRUE;
$configThumb['new_image'] = './profile_images/thumbs/';
$configThumb['maintain_ratio'] = TRUE;
$configThumb['width'] = 64;
$configThumb['height'] = 72;
$configThumb['thumb_marker'] = "";
//$this->load->library('image_lib');
/* size 64*72 for comments */
/* size 167*167 for profile page */
$configThumbMedium = array();
$configThumbMedium['image_library'] = 'gd2';
$configThumbMedium['create_thumb'] = TRUE;
$configThumbMedium['new_image'] = './profile_images/medium/';
$configThumbMedium['maintain_ratio'] = TRUE;
$configThumbMedium['width'] = 167;
$configThumbMedium['height'] = 167;
$configThumbMedium['thumb_marker'] = "";
/* size 167*167 for profile page */
if(!$this->upload->do_upload('image')){
return 0;
}
$uploadedDetails = $this->upload->data();
if($uploadedDetails['is_image'] == 1){
$configThumb['source_image'] = $uploadedDetails['full_path'];
$configThumbMedium['source_image'] = $uploadedDetails['full_path'];
$raw_name = $uploadedDetails['raw_name'];
$file_ext = $uploadedDetails['file_ext'];
$imgname = $raw_name.$file_ext;
$this->image_lib->initialize($configThumb);
$this->image_lib->resize();
$this->image_lib->initialize($configThumbMedium);
$this->image_lib->resize();
}
}
//die();
/* Upload Image */
$data = $this->input->post(null);
//echo "<pre>";print_r($data);echo "</pre>";die;
if(isset($imgname) && $imgname != ""){
$data['image'] = $imgname;
}
$this->db->where('id',$this->session->userdata['logged_user']['id'])->update('admins', $data);
return 1;
}
函数udpate\u配置文件($userId=0){
$data=array();
//echo“”;print_r($_POST);echo“”;
/*上传图像*/
如果($\u文件['image']['name']!=“”){
//echo“”;打印($文件);echo“”;
//回声“进入”;死亡;
/*检查上一个文件是否存在*/
$chkRs=$this->db->select('image')->where('id',$this->session->userdata['logged_user']['id')->get('admins');
//echo$this->db->last_query();die;
如果($chkRs->num_rows()>0){
$chkD=$chkRs->row_数组();
如果($chkD['image']!=“”){
###删除上一个图像###
$pathActual='./profile_images/';
$pathMedium='./profile_images/medium/';
$pathThumb='./profile_image/thumbs/';
如果(文件_存在($pathActual.$chkD['image']){#删除实际图像
取消链接($pathActual.$chkD['image']);
}
如果(文件u存在($pathmedia.$chkD['image']){#删除介质映像
取消链接($pathMedium.$chkD['image']);
}
如果(文件_存在($pathThumb.$chkD['image']){#删除拇指图像
取消链接($pathThumb.$chkD['image']);
}
###删除上一个图像###
}
}
/*检查上一个文件是否存在*/
//打印($_文件['image']);模具;
$this->load->lib('image_lib');
$configUpload['upload_path']='./profile_images/';
$configUpload['allowed_types']='gif | jpg | png | bmp | jpeg';
$configUpload['max_size']='0';
$configUpload['max_width']='0';
$configUpload['max_height']='0';
$configUpload['encrypt_name']=true;
$this->load->library('upload',$configUpload);
/*注释尺寸64*72*/
$configThumb=array();
$configThumb['image_library']='gd2';
$configThumb['create_thumb']=TRUE;
$configThumb['new_image']='./profile_image/thumbs/';
$configThumb['Maintent_ratio']=TRUE;
$configThumb['width']=64;
$configThumb['height']=72;
$configThumb['thumb_marker']='';
//$this->load->lib('image_lib');
/*注释尺寸64*72*/
/*个人资料页尺寸167*167*/
$ConfigThumbMedia=array();
$ConfigThumbMedia['image_library']='gd2';
$ConfigThumbMedia['create_thumb']=TRUE;
$configThumbMedia['new_image']='./profile_images/medium/';
$ConfigThumbMedia['Maintent_ratio']=TRUE;
$ConfigThumbMedia['width']=167;
$configThumbMedium['height']=167;
$configThumbMedium['thumb_marker']='';
/*个人资料页尺寸167*167*/
如果(!$this->upload->do_upload('image')){
返回0;
}
$uploadedDetails=$this->upload->data();
如果($uploadedDetails['is_image']==1){
$configThumb['source_image']=$uploadedDetails['full_path'];
$ConfigThumbMedia['source_image']=$uploadedDetails['full_path'];
$raw_name=$uploadedDetails['raw_name'];
$file_ext=$uploadedDetails['file_ext'];
$imgname=$raw\u name.$file\u ext;
$this->image\u lib->initialize($configThumb);
$this->image_lib->resize();
$this->image\u lib->initialize($ConfigThumbMedia);
$this->image_lib->resize();
}
}
//模具();
/*上传图像*/
$data=$this->input->post(空);
//echo“”;print_r($data);echo“”;die;
if(isset($imgname)&&$imgname!=“”){
$data['image']=$imgname;
}
$this->db->where('id',$this->session->userdata['logged_user']['id'])->update('admins',$data);
返回1;
}
您检查过日志文件了吗?我检查过,但没有发现任何会显示大小调整不起作用的内容。您是否对我应该查找的内容或基于我的代码的内容有建议。请删除日志文件并尝试调整图像大小,然后将图像粘贴到此处。不幸的是,当我上载的图像小于指定尺寸时,它的大小与照片预裁剪的大小相同,如果我试图上传一张更大的照片,它根本不会上传。我也遇到过同样的问题。至于您建议的“上传后需要提供源图像的完整路径”,您指的是显示路径吗?或者您指的是将上载方法中的路径设置为完整路径。如果是,我不知道你的意思。再次感谢通过代码我做了一些修改,希望它现在能工作@LightningWristI恐怕没有上传