问题!您必须在首选项中指定源图像

时间:2011-07-14 18:08:19

标签: codeigniter

大家好我想在我的localhost(WAMP)上用codeigniter上传图片但是出现了两个问题:

您必须在首选项中指定源图像。

您的服务器不支持处理此类图像所需的GD功能。

我尝试过什么不修复但没有结果

这是我的代码:

class Upload_mod extends CI_Model{

  var $gallery_path;
  var $gallery_path_url;

  function index(){
    parent::__construct();
    $this->gallery_path = realpath(APPPATH . '../uploads');
    $this->gallery_path_url = base_url().'uploads/';
  }

  function do_upload() {
    $config = array(
      'allowed_types' => 'jpg|jpeg|gif|png',
      'upload_path'   => $this->gallery_path);

    $this->load->library('upload');
    $this->upload->initialize($config);
    $this->upload->do_upload();
    $image_data = $this->upload->data();
    print_r($image_data);

    if ( ! $this->upload->do_upload())
    {
      $error = array('error' => $this->upload->display_errors());
      gd_info();
      echo $error;
    }    

    $config['source_image'] = $image_data['full_path'];
    $config['new_image'] = $this->gallery_path . '/thumbs';
    $config['maintain_ratio'] = TRUE;
    $config['width'] = 75;
    $config['height'] = 50;

    $this->load->library('image_lib');
    $this->image_lib->initialize($config);
    $this->image_lib->resize();

    if ( ! $this->image_lib->resize())
    {
      echo $this->image_lib->display_errors();
    }

  }
}

2 个答案:

答案 0 :(得分:1)

我在这里猜测,但我认为问题是你正在调用$this->image_lib->resize()两次,但第二个配置在你运行第一个之后被清除 - 所以它找不到文件,那就是触发第二个错误。 “这种类型的图像”可能是NULL值或其他东西。你也只是在第二次调用时进行错误检查,所以第一个可能正常工作。

尝试此更改并查看是否有帮助:

$this->load->library('image_lib');
$this->image_lib->initialize($config);
// $this->image_lib->resize(); Remove this call to resize()

if ( ! $this->image_lib->resize())
{
  echo $this->image_lib->display_errors();
}

另一种方法可以做到:

$this->load->library('image_lib');
$this->image_lib->initialize($config);
$success = $this->image_lib->resize();

if ( ! $success)
{
  echo $this->image_lib->display_errors();
}

无论哪种方式,即使这不是您唯一的问题,您也应该只拨打resize()一次。

答案 1 :(得分:0)

在php.ini中 你必须改变这一行 upload_max_filesize = 2MB