codeigniter изменяет размер изображения и создает миниатюру
Привет в соответствии с документом ci вы можете изменять размер изображений с помощью image_lib, и есть варианты, которые предполагают, что мы можем создать дополнительный эскиз из этого изображения
create_thumb FALSE TRUE/FALSE (boolean) Tells the image processing function to create a thumb. R
thumb_marker _thumb None Specifies the thumbnail indicator. It will be inserted just before the file extension, so mypic.jpg would become mypic_thumb.jpg R
Итак, вот мой код
$config_manip = array(
'image_library' => 'gd2',
'source_image' => "./uploads/avatar/tmp/{$this->input->post('new_val')}",
'new_image' => "./uploads/avatar/{$this->input->post('new_val')}",
'maintain_ratio'=> TRUE ,
'create_thumb' => TRUE ,
'thumb_marker' => '_thumb' ,
'width' => 150,
'height' => 150
);
$this->load->library('image_lib', $config_manip);
$this->image_lib->resize();
Я бы предположил, что этот код изменяет размер моего изображения, а также создает миниатюру, но я получаю только одно изображение с указанными размерами и постфиксом _tump
Я также пытался добавить этот код для создания второго изображения вручную, но все равно он не работает, и я получаю только один изображение
$this->image_lib->clear();
$config_manip['new_image'] =
"./uploads/avatar/thumbnail_{$this->input->post('new_val')}";
$config_manip['width'] = 30 ;
$config_manip['height'] = 30 ;
$this->load->library('image_lib', $config_manip);
$this->image_lib->resize();
4 answers
Похоже, проблема в вашем коде заключается в пути. Я модифицировал и проверил сам, как это работает.
public function do_resize()
{
$filename = $this->input->post('new_val');
$source_path = $_SERVER['DOCUMENT_ROOT'] . '/uploads/avatar/tmp/' . $filename;
$target_path = $_SERVER['DOCUMENT_ROOT'] . '/uploads/avatar/';
$config_manip = array(
'image_library' => 'gd2',
'source_image' => $source_path,
'new_image' => $target_path,
'maintain_ratio' => TRUE,
'create_thumb' => TRUE,
'thumb_marker' => '_thumb',
'width' => 150,
'height' => 150
);
$this->load->library('image_lib', $config_manip);
if (!$this->image_lib->resize()) {
echo $this->image_lib->display_errors();
}
// clear //
$this->image_lib->clear();
}
Надеюсь, это поможет вам. Спасибо!!
Ваш код в порядке, но вам нужно внести небольшое изменение.
$this->load->library('image_lib');
$this->image_lib->initialize($config_manip);
Простой способ создания миниатюры.
function _create_thumbnail($fileName, $width, $height)
{
$this->load->library('image_lib');
$config['image_library'] = 'gd2';
$config['source_image'] = $_SERVER['DOCUMENT_ROOT']. $fileName;
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = $width;
$config['height'] = $height;
$config['new_image'] = $_SERVER['DOCUMENT_ROOT']. $fileName;
$this->image_lib->initialize($config);
if (! $this->image_lib->resize()) {
echo $this->image_lib->display_errors();
}
}
Если вы хотите создать более одного изображения с помощью метода resize()
, вам нужно вызывать $this->image_lib->initialize($config);
каждый раз, когда вы пытаетесь изменить размер.
Этот учебник решил эту проблему для меня Загрузите изображение и создайте несколько размеров миниатюр в CodeIgniter