Невозможно изменить размер изображения и загрузить его в базу данных, используя GD с CakePHP2 - PullRequest
0 голосов
/ 25 июня 2019

Я успешно загрузил изображения в свою базу данных, но теперь мне нужны эскизы для каждого изображения, которое я добавляю. Я не могу изменить размер и сохранить изображение в виде отдельного файла в моей папке webroot / img / thumbnail.

Мне нужно загрузить файл, а в конце он должен обрезать / изменить размер изображения и сохранить это изображение, а также исходное изображение в базе данных. Ниже моя функция контроллера для того, когда я нажимаю отправить в форме.

if(!empty($this->request->data['Student']['imagePath']))
                {
                        $file = $this->request->data['Student']['imagePath']; //put the data into a var for easy



                        move_uploaded_file($file['tmp_name'], 'img/thumbnail/' . $file['name']);
                        $this->request->data['Student']['imagePath'] = $file['name'];

                        move_uploaded_file($file['tmp_name'], 'img/' . $file['name']);
                        $this->request->data['Student']['resizeImage'] = $file['name'];

                }

Нет ошибок. Просто не сохраняет в БД

1 Ответ

0 голосов
/ 04 июля 2019

Вот решение проблемы. Чтобы создать отдельную папку для миниатюр, мне пришлось взять изображения из папки «img» и изменить их размер, а затем переместить их в папку с миниатюрами. :))

public function add() {
    $data = $this->Department->find('list', array(
        'fields' => array('departmentname'),
        'contain' => array(
            'Department'
        )
            )
    );

    $this->set('depdata', $data);

    if ($this->request->is('post')) {
        if (!empty($this->request->data['Student']['cvsFile'])) {

            $cvs = $this->request->data['Student']['cvsFile'];
            $ext = substr(strtolower(strrchr($cvs['name'], '.')), 1);

            if ($this->Student->validate) {

                move_uploaded_file($cvs['tmp_name'], 'files/' . $cvs['name']);
                $this->request->data['Student']['cvsFile'] = $cvs['name'];
            }
        }

        if (!empty($this->request->data['Student']['imagePath'])) {
            $file = $this->request->data['Student']['imagePath'];
            move_uploaded_file($file['tmp_name'], 'img/' . $file['name']);
            if ($file['name'] == "") {

            } 
            else {

                list($old_width, $old_height) = getimagesize(WWW_ROOT . "img/" . $file['name']);

                $new_width = 50;
                $new_height = 50;

                $ext = substr(strtolower(strrchr($file['name'], '.')), 1);

                if ($ext == 'png') {

                    $new_image = imagecreatetruecolor($new_width, $new_height);
                    $old_image = imagecreatefrompng(WWW_ROOT . "img/" . $file['name']);
                    imagecopyresampled($new_image, $old_image, 0, 0, 0, 1, $new_width, $new_height, $old_width, $old_height);
                    imagepng($new_image, WWW_ROOT . "img/thumbnail/" . $file['name'], 3);
                } 
                elseif ($ext == 'jpg') {
                    $new_image = imagecreatetruecolor($new_width, $new_height);
                    $old_image = imagecreatefromjpeg(WWW_ROOT . "img/" . $file['name']);
                    imagecopyresampled($new_image, $old_image, 0, 0, 1, 1, $new_width, $new_height, $old_width, $old_height);
                    imagejpeg($new_image, WWW_ROOT . "img/thumbnail/" . $file['name'], 30);
                }

                $this->request->data['Student']['imagePath'] = 'thumbnail/' . $file['name'];
            }

            if ($this->Student->save($this->request->data)) {
                $this->Flash->set("Student has been added.");
                $this->redirect(array('action' => 'add'));
            }
        }
    }
}
...