当前位置: 首页 > 知识库问答 >
问题:

无法调整图像大小并上传到DB使用GD与CakePHP2

云丰
2023-03-14

我已经成功上传图像到我的数据库,但现在我需要我添加的每个图像的缩略图。我似乎无法调整大小和存储图像作为一个单独的文件在我的webroot/img/缩略图文件夹。

我需要上传一个文件,在后端它应该裁剪/调整图像大小,并将该图像以及原始图像存储在数据库中。下面是我在表单上按submit时的控制器功能。

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个答案

岳晟
2023-03-14

这是解决问题的办法。为缩略图创建一个单独的文件夹,我必须从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'));
            }
        }
    }
}
 类似资料:
  • 问题内容: 我正在尝试在python 2.7中创建一个tkinter项目,用户可以在其中调整窗口的大小,并且窗口中的所有内容都将随之缩放。这意味着画布,画布中的形状以及最重要的是PhotoImages将随窗口缩放。我的问题是我一生都无法正确调整图像大小。我知道并且为此目的而存在,但是首先 在50x50像素的图像中没有明显变化,对于zoom(2,2)也相同。重要的是要注意我知道PIL存在,但是出于本

  • 我正在使用multer将图像上传到服务器。我正在使用sharp调整图像的大小,然后发送到客户端。但是发生的情况是,一旦用户上传了图像,multer将其上传到服务器,夏普甚至调整了它的大小,但是如果同一个用户再次上传,multer上传了新文件,但是夏普并没有调整新上传的图像的大小,而是发送原来的调整过大小的图像。

  • 问题内容: 我正在尝试将调整大小的图像上传到S3: 但我得到一个错误: 问题答案: 您需要先将输出图像转换为一组字节,然后才能上载到s3。您可以将图像写入文件然后上传文件,也可以使用cStringIO对象来避免写入磁盘,就像我在这里所做的那样:

  • 问题内容: 我有一个快速的问题,我不太确定要进行设置。我在其他地方看到过示例,但没有什么比我的情况更具体。我想使用PHP调整图像的大小,以使图像易于阅​​读,而不仅仅是像使用HTML那样随意拉伸。如果它们的宽度不是250像素,也不是160像素,那么如何调整图片的大小,使其成比例但适合该空间? 谢谢! 问题答案: 好的,下面是我在商店中使用的Image对象。保持规模-需要GD 我在请求时调整图像的大

  • 问题内容: 我发现了一些不同的帖子,甚至关于stackoverflow的问题都回答了这个问题。我基本上正在实现与此职位相同的事情。 所以这是我的问题。上传照片时,我还需要提交表单的其余部分。这是我的html: 以前,我不需要调整图像大小,因此我的JavaScript看起来像这样: 所有这些都很好用…现在我需要调整图像的大小…如何替换表单中的图像,以便发布调整大小的图像而不是上传的图像? 我曾考虑过

  • 问题内容: 我在这里使用Go调整大小包:https://github.com/nfnt/resize 我正在从S3中提取图像,如下所示: // this gives me data []byte 之后,我需要调整图像大小: // problem is that the original_image has to be of type image.Image 将图像上传到我的S3存储桶 // pro