Я использую codeigniter, и я хочу изменить размер изображения у пользователя, загружающего через url.
Вот мой код:
//upload via url
$url = $this->input->post('photo');
/* Extract the filename */
$filename = substr($url, strrpos($url, '/') + 1);
/* Save file wherever you want */
file_put_contents('myuploads/'.$filename, file_get_contents($url));
//resize start
$config['image_library'] = 'gd2';
$config['source_image'] = $filename;
$config['overwrite'] = TRUE;
$config['width'] = 59;
$config['height'] = 90;
$this->load->library('image_lib', $config);
$this->image_lib->initialize($config);
$this->image_lib->resize();
$data=array(
'username'=>$this->input->post('username'),
'deskrip'=>$this->input->post('deskrip'),
'photo'=>$filename
);
$this->db->where('id',$id);
$outp = $this->db->update('user',$data);
Загрузка работает, но проблема заключается в том, что изображение не будет изменяться в 59х90 и все еще в исходном размере.
Любой ответ?
Большое спасибо..
Может быть немного не по теме (не через codeigniter), но я нашел, что этот метод будет немного легче в моем проекте.
Я использовал эту логику для создания логики обрезки изображений.
$value = "picture.jpg";
$x = $p[0];
$y = $p[1];
$w = $p[2];
$h = $p[3];
$targ_w = $w;
$targ_h = $h;
$jpeg_quality = 90;
$src = REAL_PATH."uploads/".$value;
$src_end = $path."/".$value;
$ext = pathinfo($src, PATHINFO_EXTENSION);
if(($ext == "jpg" || $ext == "jpeg") && isset($x) && isset($y) && isset($w))
{
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );
imagecopyresampled($dst_r,$img_r,0,0,$x,$y,
$targ_w,$targ_h,$w,$h);
unlink($src);
imagejpeg($dst_r,$src_end,$jpeg_quality);
}
resize() работает или нет, вы можете увидеть ошибку:
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
см. документацию. Хороший учебник по изображению Manipulation, от tutsplus
Надеюсь, это поможет вам.
благодаря