上传图片然后调整图片大小
问题描述:
我遇到了简单的图片上传问题。我已经尝试过,只有在添加图像大小调整功能给出未知错误之后,上传部分才能完美地工作。上传图片然后调整图片大小
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"
}
答
我认为你的问题可能与调用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());
}
什么版本FuelPHP您使用的是?强制图像扩展仅在版本1.3中可用。 – 2013-03-09 13:35:41
那么我使用的是1.5版本的linux,并且是加载了gd扩展。在图像已经上传到服务器后,至少图像调整大小工作,但此移动需要额外的资源。 – 2013-03-10 06:36:09
必须检查上传路径是否正确?你可以尝试将图像放在资产文件夹中而不是../image中吗? – 2013-03-12 17:41:25