Codeigniter: изменение размера нескольких загруженных изображений позволяет изменить только одно изображение - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь изменить размер всех загруженных изображений, загруженных из формы, и сохранить измененную копию в другой папке.Этот метод прекрасно работает с загрузкой одного изображения, а не с загрузкой нескольких изображений.Проблема здесь в том, что я получаю только 1 изображение с измененным размером.Вот код загрузки и изменения размера:

$this->load->library('upload');
$dataInfo = array();
$files = $_FILES;
$cpt = count($_FILES['userfile']['name']);
for($i=0; $i<$cpt; $i++)
    {
      $_FILES['userfile']['name']= $files['userfile']['name'][$i];
      $_FILES['userfile']['type']= $files['userfile']['type'][$i];
      $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
      $_FILES['userfile']['error']= $files['userfile']['error'][$i];
      $_FILES['userfile']['size']= $files['userfile']['size'][$i];

      $config = array();
      $config['upload_path'] = realpath(APPPATH . '../images/myfolder/');
      $config['allowed_types'] = 'gif|jpg|png';
      $config['max_size']      = '2000';
      $config['overwrite']     = FALSE;
      $rand_string = $this->generateRandomString(3);
      $ext = strtolower(pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION));
      $filename = round(microtime(true) * 1000).$rand_string.'.'.$ext;
      $config['file_name']  = $filename;

      $this->upload->initialize($config);
      if ($this->upload->do_upload('userfile')) {
          $this->resizeImage($filename);
          $dataInfo[] = $this->upload->data();
      }
  }

Функция изменения размера

public function resizeImage($filename)

{
    $source_path = realpath(APPPATH . '../images/myfolder/'.$filename) ;

    $target_path = realpath(APPPATH . '../images/myfolder/thumbs/') ;

    $config_manip = array(
        'image_library' => 'gd2',
        'source_image' => $source_path,
        'new_image' => $target_path,
        'maintain_ratio' => TRUE,
        'create_thumb' => TRUE,
        'thumb_marker' => '',
        'width' => 200,
        'height' => 200
    );

    $this->load->library('image_lib', $config_manip);

    if (!$this->image_lib->resize()) {
        echo $this->image_lib->display_errors();
        exit;
    }

    $this->image_lib->clear();
}

Но я получаю только 1 изменение размера изображения, хотя все изображения загружены, а не только одно.Почему это происходит и как это исправить?

1 Ответ

0 голосов
/ 23 мая 2019

Предполагая, что все ваши изображения загружаются (это верно?), Тогда я бы предложил попробовать: $this->upload->initialize($config, true); и:

$this->load->library('image_lib');
$this->image_lib->initialize($config_manip);
    if (!$this->image_lib->resize()) {
        echo $this->image_lib->display_errors();
        exit;
    }
...