如何调整文件中的图像获取内容

时间:2015-01-31 08:16:47

标签: php codeigniter upload

我正在使用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且仍保持原始尺寸。

任何答案?

非常感谢..

2 个答案:

答案 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);
}