Nano Hash - криптовалюты, майнинг, программирование

Функция codeigniter $this-›image_lib-›resize() не изменяет размер изображения

я хочу изменить размер изображения, но оно не работает должным образом, $this->image_lib->resize() эта функция не может изменить размер изображения. он производит исходный размер изображения. Я загружаю изображение размером 600 * 600. но я хочу изменить размер 300 * 300, пожалуйста, проверьте мой код ниже.

if( $this->input->post('save')){

        $config['upload_path'] = 'images';
        $config['allowed_types'] = 'jpg|png';
        $config['max_size'] = 1000;
        $config['overwrite'] = false;
        $config['encrypt_name'] = true;
        $this->load->library('upload', $config);

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

        if(!$this->upload->do_upload('user_image')){
            $this->session->set_flashdata('message', $this->upload->display_errors());
            $this->load->view('create',$data);
            return;
        }else{
            $upicture = $this->upload->data();
            $image_data = $upicture;
            $config2['image_library'] = 'gd2';
            $config2['source_image'] = $image_data['full_path']; //get original image
            $config2 ['new_image'] = 'images'; //save as new image //need to create thumbs first
            $config2 ['maintain_ratio'] = false;
            $config2 ['create_thumb'] = false;
            $config2 ['overwrite'] = false;
            $config2['width'] = 300;
            $config2['height'] = 300;
            $this->load->library('image_lib', $config2);
            $this->image_lib->resize();

            $img_name = $upicture['file_name'];
        }


        $this->form_validation->set_rules('student_name', 'Student Name','required');
        $this->form_validation->set_rules('student_email', 'Student Email','required|valid_email|is_unique[std_info.std_email]',['is_unique'=> 'The {field} field is alredy exits']);

        $this->form_validation->set_message('valid_email','This {field} field is invalid');
        //$this->form_validation->set_message('is_unique', 'This {field} is Alreay exist!');


        $receive = $this->input->post(['student_name','student_email','student_about'], TRUE);
        $param = [
            'std_name'  => (string) $receive['student_name'],
            'std_email' => (string) $receive['student_email'],
            'std_about' => (string) $receive['student_about'],
            'images'    => $img_name
        ];
        if($this->form_validation->run()){
            $response = $this->std_model->insert_data('std_info',$param);
            if($response['status'] === 'success'){
                redirect('welcome');
            }
        }else{
            $this->load->view('create',$data);
            return;
        }

    }

  • Вам нужно объяснить, где именно в вашем коде он не дает ожидаемого результата. 08.12.2017
  • $config2['ширина'] = 300; $config2['высота'] = 300; 08.12.2017
  • Установите для параметра overwrite значение true, так как вы просто хотите изменить размер изображения, верно? 09.12.2017
  • ... Если это так, вы должны удалить новое изображение в соответствии с документацией 09.12.2017

Ответы:


1

Если ни один из двух параметров, перечисленных выше (create_thumb и new_image), не используется, вместо этого метод изменения размера будет нацелен на исходное изображение для обработки.

Я проверил ваш код, и, как я подозреваю, вы должны сделать следующее:

$config2['image_library'] = 'gd2';
$config2['source_image'] = $image_data['full_path']; //get original image
//$config2 ['new_image'] = 'images'; //save as new image //need to create thumbs first
$config2 ['maintain_ratio'] = false;
$config2 ['create_thumb'] = false;
//$config2 ['overwrite'] = true;
$config2['width'] = 300;
$config2['height'] = 300;

Из документации по созданию копии: «Метод изменения размера создаст копию файла изображения (и сохранит оригинал) если вы зададите путь и/или новое имя файла, используя эту настройку»

https://www.codeigniter.com/userguide3/libraries/image_lib.html

Если вы хотите сохранить оригинал и иметь большой палец, либо введите новое имя для файла в поле new_image, как в 'images/someimage.jpg', либо установите create_thumb как TRUE.


Рефакторинг

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

if ($this->input->post('save')) {
    $this->form_validation->set_rules('student_name', 'Student Name', 'required');
    $this->form_validation->set_rules('student_email', 'Student Email', 'required|valid_email|is_unique[std_info.std_email]', ['is_unique' => 'The {field} field is alredy exits']);
    $this->form_validation->set_message('valid_email', 'This {field} field is invalid');
    if (!$this->form_validation->run()) {
        $this->load->view('create', $data);
        return;
    }
    $config['upload_path'] = 'images';
    $config['allowed_types'] = 'jpg|png';
    $config['max_size'] = 1000;
    $config['overwrite'] = false;
    $config['encrypt_name'] = true;
    $this->load->library('upload', $config);
    $this->upload->initialize($config);
    if (!$this->upload->do_upload('user_image')) {
        $this->session->set_flashdata('message', $this->upload->display_errors());
        $this->load->view('create', $data);
        return;
    }
    $image_data = $this->upload->data();
    $config2['image_library'] = 'gd2';
    $config2['source_image'] = $image_data['full_path']; //get original image
    //$config2['new_image'] = 'images'; //save as new image //need to create thumbs first
    $config2['maintain_ratio'] = false;
    $config2['create_thumb'] = false;
    //$config2['overwrite'] = false;
    $config2['width'] = 300;
    $config2['height'] = 300;
    $this->load->library('image_lib', $config2);
    if (!$this->image_lib->resize()) {
        $this->session->set_flashdata('message', $this->image_lib->display_errors());
        $this->load->view('create', $data);
        return;
    }
    $receive = $this->input->post(['student_name', 'student_email', 'student_about'], TRUE);
    $param = [
        'std_name' => (string) $receive['student_name'],
        'std_email' => (string) $receive['student_email'],
        'std_about' => (string) $receive['student_about'],
        'images' => $image_data['file_name']
    ];
    $response = $this->std_model->insert_data('std_info', $param);
    if ($response['status'] === 'success') {
        redirect('welcome');
    }
}
08.12.2017
  • вы спасли мой день, спасибо 10.06.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..