我正在尝试让用户上传文件,然后我的功能会将该照片的大小调整为800x600,然后将该文件的大小调整为165x165。使用我的代码,它只是将其调整为165x165,但如果我评论该部分,它会将其调整为800x600。
我可以做些什么来调整它们的大小?
/**
* addPhoto - function which shows the add photo page
*/
function addPhoto($album)
{
$album = rawurldecode($album);
ini_set('upload_max_filesize', '4M');
ini_set('post_max_size', '12M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
$config['upload_path'] = './assets/images/photoAlbums/'.$album.'/';
$config['allowed_types'] = 'jpg|jpeg|pjpeg';
$config['max_size'] = '4096'; // that's 4MBs
$config['max_width'] = '4000';
$config['max_height'] = '3000';
$config['remove_space'] = TRUE;
$config['overwrite'] = TRUE;
$this->load->library('upload', $config);
if(!$this->upload->do_upload('userFile')) { // if there are errors uploading the file...
$content_data['error'] = array('error' => $this->upload->display_errors());
} else { // else there are NO errors, we need to resize it, and ditch that huge ass original
$image = $this->upload->data();
$uploadedFile = $image['file_name'];
$this->load->library('image_lib');
$thumbConfig['image_library'] = 'gd2';
$thumbConfig['source_image'] = $image['full_path'];
$thumbConfig['create_thumb'] = FALSE;
$thumbConfig['maintain_ratio'] = TRUE;
$thumbConfig['width'] = 800;
$thumbConfig['height'] = 600;
$this->image_lib->initialize($thumbConfig);
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
$this->image_lib->clear();
$thumbConfig['image_library'] = 'gd2';
$thumbConfig['source_image'] = $image['full_path'];
$thumbConfig['create_thumb'] = TRUE;
$thumbConfig['maintain_ratio'] = FALSE;
$thumbConfig['width'] = 165;
$thumbConfig['height'] = 165;
$this->image_lib->initialize($thumbConfig);
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
$content_data['firstName'] = $this->session->userdata('firstName');
$data['sess'] = $this->session;
$data['content'] = $this->load->view('member/addPhoto_success', $content_data, true);
$this->load->view('template/admin', $data);
}
}
答案 0 :(得分:1)
第二次运行image_lib时,您将要通过指定要创建的新文件来避免覆盖该文件: 后:
$thumbConfig['height'] = 165;
添加:
$thumbConfig['new_image'] = $image['file_path'] . "thumb_" . $image['file_name'];
所以如果您调整大小的800 x 600图像位于/my/upload/path/foo.jpg, 这将在/my/upload/path/thumb_foo.jpg创建一个拇指。
答案 1 :(得分:1)
如果要创建两个新的已调整大小的图像并保持原始图像完整,则需要添加
$config['create_thumb'] = TRUE;
或
$config['new_image'] = '/path/to/new_image.jpg';
到第一部分。
根据您的代码,您将使用800x600版本覆盖原始文件,然后创建165x165缩略图。
答案 2 :(得分:0)
我认为你在第一次调整时错过了这一行:
$thumbConfig['source_image'] = $image['full_path'];
答案 3 :(得分:0)
我知道这是一个非常古老的问题,但我遇到了同样的问题。
$config['create_thumb'] = true
没有创建新文件。
添加拇指标记配置:
$config['thumb_marker'] = '_thumb'
的工作。
似乎_thumb
不是thumb_marker
的默认值。