我正在使用codeigniter,我想调整来自通过网址上传的用户的图片。
这是我的代码:
//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);
上传正在运行,但问题是图片不会调整为59x90且仍保持原始尺寸。
任何答案?
非常感谢..
答案 0 :(得分:0)
resize()方法是否有效你可以看到错误:
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
见Documentation 有一个很好的图像处理教程,来自tutsplus
希望这对你有所帮助。
由于
答案 1 :(得分:0)
可能有点偏离主题(不是通过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);
}