当文件大于2 MB时,php resize函数无法正常工作

时间:2015-01-29 06:39:48

标签: php image-uploading wideimage

我正在使用以下功能上传图片文件并调整大小。

    public function upload()
    {
        include_once 'wideimage/WideImage.php';

        $ext = $this->detect_type();

        $file_name = 'uploads/' . time() . $ext;

        if( move_uploaded_file($_FILES['file']['tmp_name'], $file_name ) )
        {
            $data[] = array(
                'status' => true,
            );
        }

        else
        {
            $data[] = array(
                'status' => false,
            );
        }    

        $image = WideImage::load($file_name);

        var_dump($image);

        $resizedImage = $image->resize(639, 554)->saveToFile( 'uploads/' . time() . '_small' . $ext );

        $thumb = 'uploads/' . time() . "_thumb" . $ext;

        $data[] = array(
            'thumb' => $thumb
        );

        $this->session->set_userdata('thumb', $thumb);
        $resizedImage = $image->resize(566, 566)->saveToFile($thumb);

        echo json_encode($data);

    }

我适用于小于2 MB的文件。但是当我上传大于2 MB的图像时,它并没有起作用。我转储$ image对象创建它什么都不返回。

图片上传完美上传到服务器但没有调整大小。请建议解决它。

我正在使用此图片库http://wideimage.sourceforge.net/

php.ini 设置

post_max_size = 32MB;
upload_max_size = 32MB;
max_execution_time = 300;
max_input_time = 100;

编辑:图像完美上传到服务器只有在文件大小超过2 MB时调整大小才会出现问题。

当文件大小小于2MB var_dump($image)输出

object(WideImage_TrueColorImage)[16]
  protected 'handle' => resource(48, gd)
  protected 'handleReleased' => boolean false
  protected 'canvas' => null
  protected 'sdata' => null

当大于2MB时,它什么都不返回

3 个答案:

答案 0 :(得分:1)

您应该检查您的配置:

PHP change the maximum upload file size

我的猜测是你离开了默认设置,只允许上传2MB。

答案 1 :(得分:1)

如果图像完美上传到服务器但没有调整大小 - 请检查php.ini(或.htaccess)中的memory_limit并尝试增加它。

答案 2 :(得分:0)

您的php.ini限制了最大文件大小。更改它修改php.ini值:

; Maximum allowed size for uploaded files.
upload_max_filesize = 400M

; Must be greater than or equal to upload_max_filesize
post_max_size = 400M