Codeigniter中的大小调整和裁剪

Codeigniter中的大小调整和裁剪,codeigniter,Codeigniter,您好,我想知道您是否可以帮助我,基本上我使用的是Codeigniter,我希望能够上传图像并将其保存到三个不同的文件夹中,作为三种不同的大小,但是,它们必须符合我指定的确切尺寸,而不会看起来拉伸或扭曲 这是我的控制器-如果你能帮助我,我将非常感激 $config['upload_path'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'; $config['allowed_types'] = 'gif|jpg|png|bmp|j

您好,我想知道您是否可以帮助我,基本上我使用的是Codeigniter,我希望能够上传图像并将其保存到三个不同的文件夹中,作为三种不同的大小,但是,它们必须符合我指定的确切尺寸,而不会看起来拉伸或扭曲

这是我的控制器-如果你能帮助我,我将非常感激

$config['upload_path'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/';
$config['allowed_types'] = 'gif|jpg|png|bmp|jpeg';

$this->load->library('upload');
$this->upload->initialize($config);    

if(!$this->upload->do_upload())
{
   $error = array('error' => $this->upload->display_errors());
   $this->load->view('submit', $error);
}    
else {
   $data['upload_data'] = array('upload_data' => $this->upload->data());
   $file_name = $this->upload->file_name;

   list($image_width, $image_height) = getimagesize($_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'.$file_name);

   // create small size
   $config['image_library'] = 'GD2';
   $config['source_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'.$file_name;
   $config['new_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name;
   $config['maintain_ratio'] = TRUE;
   $config['width'] = 181;
   $config['height'] = 115;
   $config['master_dim'] = 'width';

   $this->load->library('image_lib');
   $this->image_lib->initialize($config);

   if($image_width >= $config['width'] AND $image_height >= $config['height'])
   {
      if (!$this->image_lib->resize())
      {
         echo $this->image_lib->display_errors();
      } else {
         if(file_exists($_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name)) 
         {
            list($image_width, $image_height) = getimagesize($_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name);
            if($image_height > '115')
            { 
           $config['source_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name;
           $y_axis = $image_height - 115;
           $config['y_axis'] = $y_axis;
           $config['x_axis'] = 181;
           $this->image_lib->initialize($config);
           if (!$this->image_lib->crop())
               {
                  echo $this->image_lib->display_errors();
               } else {
                  echo "cropped";    
           }
         }
      }
   }
}  

我不确定您是否在使用实际的图像大小调整器库时遇到问题,或者您是否只是想知道如何保存到三个不同大小的位置。。。假设您想做后者,您可能只想创建一个函数来为您进行图像大小调整,然后传入您想要的不同高度/宽度/目录名/等等。。。还没有测试过,但它看起来像这样:

function your_function() { 

$this->upload->initialize($config);    
$this->load->library('upload');
$this->load->library('image_lib');

if(!$this->upload->do_upload())
{
   $error = array('error' => $this->upload->display_errors());
   $this->load->view('submit', $error);
}    
else 
{
   $data['upload_data'] = array('upload_data' => $this->upload->data());
   $file_name = $this->upload->file_name;

   list($image_width, $image_height) = getimagesize($_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'.$file_name);

    $this->image_resize('115', '181', 'small', $file_name, $image_width, $image_height);    
    $this->image_resize('300', '400', 'medium', $file_name, $image_width, $image_height);
    $this->image_resize('600', '500', 'large', $file_name, $image_width, $image_height);        
}
}

private function image_resize($height, $width, $path, $file_name, $image_width, $image_height) 
{
    // Resize image settings
    $config['image_library'] = 'GD2';
    $config['source_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/original/'.$file_name;
    $config['new_image'] = $_SERVER['DOCUMENT_ROOT']."/website/uploads/$path/$file_name";
    $config['maintain_ratio'] = TRUE;
    $config['width'] = $width;
    $config['height'] = $height;
    $config['master_dim'] = 'width';

    $this->image_lib->initialize($config);

    if($image_width >= $config['width'] AND $image_height >= $config['height'])
    {
        if (!$this->image_lib->resize())
        {
            echo $this->image_lib->display_errors();
        } else {
            if(file_exists($_SERVER['DOCUMENT_ROOT']."/website/uploads/$path/$file_name")) 
            {
                list($image_width, $image_height) = getimagesize($_SERVER['DOCUMENT_ROOT']."/website/uploads/$path$file_name");
                if($image_height > '115')
                { 
                    $config['source_image'] = $_SERVER['DOCUMENT_ROOT'].'/website/uploads/small/'.$file_name;
                    $y_axis = $image_height - 115;
                    $config['y_axis'] = $y_axis;
                    $config['x_axis'] = 181;
                    $this->image_lib->initialize($config);
                    if (!$this->image_lib->crop()){
                      echo $this->image_lib->display_errors();
                    } else {
                      echo "cropped";    
                    }
                }
            }       
        }
    }
}