上传图片然后调整图片大小

问题描述:

我遇到了简单的图片上传问题。我已经尝试过,只有在添加图像大小调整功能给出未知错误之后,上传部分才能完美地工作。上传图片然后调整图片大小

public function post_add_image() 
    { 
    \Upload::process(array(
     'path'  => '../images/', 
     'normalize' => true, 
     'change_case' => 'lower', 
     'randomize' => true, 
     'ext_whitelist' => array('jpeg', 'jpg', 'gif', 'png'), 
     'max_size' => 1024 * 1024, 

    )); 

    if (!\Upload::is_valid()) { 
     return $this->response(\Upload::get_errors()); 
    } else { 
     foreach (\Upload::get_files() as $file) { 

     // Here comes ERROR 
     $image = Image::load($file['file'], false, $file['extension']); 
     $image->crop_resize(800, 600); 
     $image->save('test'); 

     } 
    } 

    //\Upload::save(); 

    return $this->response(\Upload::get_files()); 
    } 

和错误:

RuntimeException的[错误]:库不支持此文件类型的/ tmp目录/ phpOnZReS。

COREPATH /班/图像/ driver.php @行

而且我做了上传的文件的var_dump:

array(10) { 
    ["name"]=> 
    string(27) "crunchbang-logo-minimal.png" 
    ["type"]=> 
    string(9) "image/png" 
    ["error"]=> 
    bool(false) 
    ["size"]=> 
    int(278) 
    ["field"]=> 
    string(10) "pictures:0" 
    ["file"]=> 
    string(14) "/tmp/phpDdTLwJ" 
    ["errors"]=> 
    array(0) { 
    } 
    ["extension"]=> 
    string(3) "png" 
    ["filename"]=> 
    string(23) "crunchbang-logo-minimal" 
    ["mimetype"]=> 
    string(9) "image/png" 
} 
+0

什么版本FuelPHP您使用的是?强制图像扩展仅在版本1.3中可用。 – 2013-03-09 13:35:41

+0

那么我使用的是1.5版本的linux,并且是加载了gd扩展。在图像已经上传到服务器后,至少图像调整大小工作,但此移动需要额外的资源。 – 2013-03-10 06:36:09

+0

必须检查上传路径是否正确?你可以尝试将图像放在资产文件夹中而不是../image中吗? – 2013-03-12 17:41:25

我认为你的问题可能与调用Upload::save()你想后调整图像大小。上传的文件将被放入PHP tmp文件夹,因此您的/tmp/phpOnZReS

尝试将您的Upload::save()移动到foreach (\Upload::get_files() as $file)循环之前,看看是否有帮助。

这将有助于(你必须保存在公共资产图像文件或任何你调整文件之前想)

public function post_add_image() 
{ 
    \Upload::process(array(
    'path'  => '../images/', 
    'normalize' => true, 
    'change_case' => 'lower', 
    'randomize' => true, 
    'ext_whitelist' => array('jpeg', 'jpg', 'gif', 'png'), 
    'max_size' => 1024 * 1024, 

    )); 

    if (!\Upload::is_valid()) { 
     return $this->response(\Upload::get_errors()); 
    } else { 

     // Here comes the fix 

     Upload::save(); 
     $saved_image = Upload::get_files(); 
     $original_name = $saved_image[0]['name']; 
     $file_name = $saved_image[0]['saved_as']; 

     $public_asset_path_img = "assets".DS."img"; 

     $image = Image::load(DOCROOT.$public_asset_path_img.DS.$file_name, false, $file['extension']); 
     $image->resize('800'); 
     $image->save(DOCROOT.$public_asset_path_img.DS.$file_name); 


    } 

    return $this->response(\Upload::get_files()); 
}