gpt4 book ai didi

CodeIgniter 上传和调整大小问题

转载 作者:行者123 更新时间:2023-12-01 09:37:58 25 4
gpt4 key购买 nike

我花了几天时间试图根据文档中的示例进行这项工作,但我遗漏了一些东西,或者我只是愚蠢!

我有一个 CMS 应用程序,用户可以在其中上传图像以非常固定的布局显示。我们不想限制上传图像的文件大小,而是希望在它到达后“处理”它。

图像需要 615px 宽,但一些直接从数码相机上传的图像是 2500X2000 和更大的,所以这很关键。

我拼凑了手册中的代码,图像已成功上传到 CMS 应用程序中的文件夹。但是,图像没有被调整大小。

如果我让它重新调整大小,我的计划是将图像呈现给用户使用 jCrop 进行裁剪(最终图像必须为 615X275,并且在调整大小后可能必须对其高度进行裁剪),然后使用 codeigniter 到 FTP使用原始名称将图像添加到其站点的设施文件夹中。

我将不胜感激在这件事上的任何帮助!

这是我的代码:

函数 do_feature_upload() {
$imageName = $this->uri->segment(3);
//echo $imageName;

//文件将被放置的位置
$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);

如果 ( ! $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);
} 别的 {
$image_data = $this->upload->data();

$origWidth = $image_data['image_width'];
$origHeight = $image_data['image_height'];
$newWidth = 615;
$newHeight = $newWidth*$origHeight/$origWidth;

$resize = 数组(
'image_library'=>'gd2',
'source_image'=>base_url().'uploads/'.$_SESSION['dbPropNumber'].'/'.$imageName.'.jpg',
'new_image'=>base_url().'uploads/'.$_SESSION['dbPropNumber'].'/'.$imageName.'1.jpg',
'create_thumb' => 假,
'maintain_ratio'=>FALSE,
'宽度'=>$newWidth,
'高度'=>$新高度
);

$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选项

//FTP到最终目的地

$this->load->view('upload_success', $data);
}//万一
}//结束函数

最佳答案

我不完全确定您的代码出了什么问题,但这是我编写的一个模型函数,用于调整图像大小以适应确切的目标高度 目标宽度。通读一遍,看看你是否想不出解决办法。
$this->prefix是我使用的类中的一个属性,因此我不必继续写出文件的目录。它看起来像这样:
$this->prefix = FCPATH.'uploads'.DIRECTORY_SEPARATOR;
图像调整器

/**
* Resizes an image to fit exact dimensions
*
* @param string filename
* @param int target_width
* @param int target_height
*
* @return array('success' ? null : 'error')
*/
function resizeImageToDimensions($filename, $target_width=700, $target_height=399)
{
$file_type = $this->getFileType($this->prefix.$filename);

if (!$file_type || $file_type != 'image')
return array('success'=>false, 'error'=>"This file doesn't exist or isn't an image");

$this->load->library('image_lib');

list($width, $height) = getimagesize($this->prefix.$filename);
$current_ratio = $width/$height;
$target_ratio = $target_width/$target_height;
$config['source_image'] = $this->prefix.$filename;

if ($current_ratio > $target_ratio)
{
//resize first to height, maintain ratio
$config['height'] = $target_height;
$config['width'] = $target_height * $current_ratio;
$this->image_lib->initialize($config);

if (!$this->image_lib->resize())
return array('success'=>false, 'error'=>"There was an error while resizing this image");

//then crop off width
$config['width'] = $target_width;
$config['maintain_ratio'] = false;
$this->image_lib->initialize($config);

if ($this->image_lib->crop())
return array('success'=>true);
else
return array('success'=>false, 'error'=>"There was an error while cropping this image");
}
else if ($current_ratio < $target_ratio)
{
//resize first to width, maintain ratio
$config['width'] = $target_width;
$config['height'] = $target_width / $current_ratio;
$this->image_lib->initialize($config);

if (!$this->image_lib->resize())
return array('success'=>false, 'error'=>"There was an error while resizing this image");

//then crop off height
$config['height'] = $target_height;
$config['maintain_ratio'] = false;
$this->image_lib->initialize($config);

if ($this->image_lib->crop())
return array('success'=>true);
else
return array('success'=>false, 'error'=>"There was an error while cropping this image");
}
else {
$config['width'] = $target_width;
$config['height'] = $target_height;
$this->image_lib->initialize($config);

if ($this->image_lib->resize())
return array('success'=>true);
else
return array('success'=>false, 'error'=>"There was an error while resizing this image");
}
}

关于CodeIgniter 上传和调整大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4326788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com