【问题标题】:Uploading facebook url photo in CodegIgniter PHP在 CodegIgniter PHP 中上传 facebook url 照片
【发布时间】:2012-05-25 09:51:31
【问题描述】:

我制作了一个可以使用 Facebook 帐户登录的网站。

我可以轻松输入基本用户信息,但照片根本不起作用。

这是我上传照片的代码。

$imageURL = 'https://graph.facebook.com/'.$fb_id.'/picture?type=large';

$config['upload_path'] = $_SERVER['DOCUMENT_ROOT'].'/'.$this->config->item('cf_dir_uphoto_temp');
$config['allowed_types'] = 'gif|png|jpg';
$config['file_name'] = $this->session->userdata(SESSION_USERID).time();
$config['max_filename'] = '70';
$config['overwrite'] = FALSE;
$config['remove_spaces'] = TRUE;

$this->load->library('upload', $config);

if($this->upload->do_upload('photo'))
{
$data = $this->upload->data();

$src_width = $src_height = ($data['image_width'] <= $data['image_height'])? $data['image_width'] : $data['image_height'];
$buffer_width = $buffer_height = 150;

$buffer_x = 0;
$buffer_y = 0;

$src_x = sprintf('%d', ($data['image_width'] - $src_width)/2);
$src_y = sprintf('%d', ($data['image_height'] - $src_height)/2);

$save_cropfile = $_SERVER['DOCUMENT_ROOT'].'/'.$this->config->item('cf_dir_uphoto_original').$data['file_name'];
$quality = 100;

if($data['file_type'] == 'image/jpeg')
{
    $src_img = imagecreatefromjpeg($data['full_path']);
    $buffer_img = ImageCreateTrueColor($buffer_width, $buffer_height);

    imagecopyresampled($buffer_img, $src_img,
                       $buffer_x, $buffer_y, $src_x, $src_y,
                       $buffer_width, $buffer_height, $src_width, $src_height
    );

    imagejpeg($buffer_img, $save_cropfile, $quality);
}else if($data['file_type'] == 'image/gif')
{
    $src_img = imagecreatefromgif($data['full_path']);
    $buffer_img = ImageCreateTrueColor($buffer_width, $buffer_height);

    imagecopyresampled($buffer_img, $src_img,
                       $buffer_x, $buffer_y, $src_x, $src_y,
                       $buffer_width, $buffer_height, $src_width, $src_height
    );

    imagegif($buffer_img, $save_cropfile);
}else if($data['file_type'] == 'image/png')
{
    $src_img = imagecreatefrompng($data['full_path']);
    $buffer_img = ImageCreateTrueColor($buffer_width, $buffer_height);

    imagecopyresampled($buffer_img, $src_img,
                       $buffer_x, $buffer_y, $src_x, $src_y,
                       $buffer_width, $buffer_height, $src_width, $src_height
    );
    imagepng($buffer_img, $save_cropfile);
}

$config['image_library'] = 'gd2';
$config['source_image'] = $save_cropfile;
$config['new_image'] = $_SERVER['DOCUMENT_ROOT'].'/'.$this->config->item('cf_dir_uphoto_thumb');
$config['width'] = 50;
$config['height'] = 50;

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

unlink($data['full_path']);

$p_data = $this->user->set_user_photo($data['file_name']);


}else
    echo $this->upload->display_errors();

这是非常错误的代码。

$imageURL 是要转换为jpg地址的图片地址。

你能告诉我如何做到这一点吗?谢谢。

【问题讨论】:

    标签: php facebook codeigniter


    【解决方案1】:

    这不是进行 Facebook 登录的好方法。如果你想在你的应用中显示用户的照片,你应该使用 API,而不是把用户的照片下载到你的服务器上。只需做一些简单的事情,例如:

    &lt;img src="https://graph.facebook.com/{$fb_id}/picture?type=large" alt="{$username}" /&gt;

    这将让您直接使用来自 Facebook 的图片,并且当用户更改他们的个人资料图片时,它会自动更新。如果用户更新了他们的个人资料,您的代码将不会更新用户的图片。

    【讨论】:

      【解决方案2】:

      如果您正在尝试下载 facebook 用户个人资料照片,请尝试使用此代码,但首先创建一个名为 image 的文件夹并确保它已启用写入权限。

      <?php
      
      $fullpath = 'image/image.jpg';
      $url = "https://graph.facebook.com/{$user_id}/picture?type=large";
      
      function save_image($img, $fullpath) {
          $rawdata = file_get_contents($img);
          $fp = fopen($fullpath, 'w+');
          chmod($fullpath, 0777);
          fwrite($fp, $rawdata);
          fclose($fp);
      }
      
      
      
      $headers = get_headers($url, 1);
      
      if (isset($headers['Location'])) {
      $url1 = $headers['Location']; // string
      } else {
      $url1 = false; // nothing there? .. weird, but okay!
      }
      save_image($url1, $fullpath);
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        • 2012-11-04
        相关资源
        最近更新 更多