我花了几天时间根据文档中的示例尝试使其工作,但我似乎还是缺少了一些东西或者我太“蠢”了!
我有一个CMS应用程序,用户上传图像以在非常固定的布局中显示。我们不想限制上传图像的文件大小,而是希望在到达后对其进行“处理”。
图像需要为615px宽,但直接从数码相机上传的某些图像为2500X2000及更大,因此这非常关键。
我从手册中拼凑出代码,并成功将图像上传到CMS应用程序中的文件夹中。然而,图像没有被调整大小。
如果我最终调整大小,我的计划是使用jCrop向用户呈现图像进行裁剪(最终图像必须为615X275,可能需要在调整大小后裁剪高度),然后使用codeigniter将图像FTP到他们网站的amenities文件夹中,使用原始名称。
我将非常感谢在这个问题上的任何帮助!
以下是我的代码:
我有一个CMS应用程序,用户上传图像以在非常固定的布局中显示。我们不想限制上传图像的文件大小,而是希望在到达后对其进行“处理”。
图像需要为615px宽,但直接从数码相机上传的某些图像为2500X2000及更大,因此这非常关键。
我从手册中拼凑出代码,并成功将图像上传到CMS应用程序中的文件夹中。然而,图像没有被调整大小。
如果我最终调整大小,我的计划是使用jCrop向用户呈现图像进行裁剪(最终图像必须为615X275,可能需要在调整大小后裁剪高度),然后使用codeigniter将图像FTP到他们网站的amenities文件夹中,使用原始名称。
我将非常感谢在这个问题上的任何帮助!
以下是我的代码:
function do_feature_upload() { // 获取图片名称 $imageName = $this->uri->segment(3);
// 设置上传文件的路径和类型 $config['upload_path'] = "./uploads/".$_SESSION['dbPropNumber']; $config['allowed_types'] = 'jpg|jpeg'; $config['max_size'] = '0'; $config['file_name'] = $imageName.'.jpg'; $config['overwrite'] = 'TRUE';
// 加载上传类库并进行上传操作 $this->load->library('upload', $config); if ( ! $this->upload->do_upload()) { // 如果上传失败,返回错误信息 $error = array('error' => $this->upload->display_errors());
$error['propertyDropdown'] = $_SESSION['propertyDropdown']; $error['username'] = $_SESSION['username']; $error['dbPropNumber'] = $_SESSION['dbPropNumber']; $error['propertyName'] = $this->content->getPropertyName($_SESSION['dbPropNumber']);
$this->load->view('upload_AmenityImage', $error); } else { // 如果上传成功,进行图片大小调整 $image_data = $this->upload->data();
$origWidth = $image_data['image_width']; $origHeight = $image_data['image_height']; $newWidth = 615; $newHeight = $newWidth*$origHeight/$origWidth;
$resize = array( 'image_library'=>'gd2', 'source_image'=>base_url().'uploads/'.$_SESSION['dbPropNumber'].'/'.$imageName.'.jpg', 'new_image'=>base_url().'uploads/'.$_SESSION['dbPropNumber'].'/'.$imageName.'1.jpg', 'create_thumb' => FALSE, 'maintain_ratio'=>FALSE, 'width'=>$newWidth, 'height'=>$newHeight );
$this->load->library('image_lib',$resize); $this->image_lib->resize();
// 返回上传成功后的信息 $data = array('upload_data' => $this->upload->data()); $data['propertyDropdown'] = $_SESSION['propertyDropdown']; $data['username'] = $_SESSION['username']; $data['dbPropNumber'] = $_SESSION['dbPropNumber']; $data['propertyName'] = $this->content->getPropertyName($_SESSION['dbPropNumber']);
// 在图片大小调整完成后,显示 jCrop 选项
// 将图片上传到最终目标位置 $this->load->view('upload_success', $data); } }