/** * 从新浪获取头像,然后生成指定的3种尺寸图像供后续指定的$uid使用。(保护方法) * 该方法是该类进行主要操作时第一个必须要运行的方法,否则将因为无法初始化对应参数而出错。 * * @param integer $uid DZ uid * @return integer 成功则返回0,否则返回错误代码: * -1:初始化失败(无法获取新浪用户信息) * -2:传uid参数错误(小于1) * -3:无法获取服务器上的头像 * -4:服务器返回错误数据(非头像数据或者给出来的头像太小);或者临时目录权限问题导致无大头像文件 * -5:GD库没有加载,无法进行头像同步操作 */ function _getFaceAndCreateTemp($uid) { if (!extension_loaded('gd')) { return -5; } if (empty($this->sina_userinfo) || !isset($this->sina_userinfo['id'])) { return -1; } $this->uid = (int) $uid; if ($this->uid < 1) { return -2; } //获取大头像 $faceurl = str_replace($this->sina_userinfo['id'] . '/50/', $this->sina_userinfo['id'] . '/180/', $this->sina_userinfo['profile_image_url']); $body = $this->http->Get($faceurl); if ($this->http->getState() !== 200 || empty($body)) { return -3; } //写入临时目录 $this->faceTempPath[1] = XWB_P_DATA . '/temp/' . $this->uid . '_1_xwb_face_temp.jpg'; file_put_contents($this->faceTempPath[1], $body, LOCK_EX); //大头像安全性和有效性检查(服务器给出来的头像太小,也丢弃处理) $imageSize = getimagesize($this->faceTempPath[1]); if (false === $imageSize || $imageSize[0] < 30 || $imageSize[1] < 30) { $this->_delTempFace(); return -4; } //创建中小头像 foreach ($this->faceSize as $key => $size) { //大头像无需处理 if (1 === $key) { continue; } $imgProc = XWB_plugin::N('images'); $imgProc->loadFile($this->faceTempPath[1]); //载入大头像 //$imgProc->crop(0,0,180,180); $imgProc->resize($size['w'], $size['h']); $this->faceTempPath[$key] = XWB_P_DATA . '/temp/' . $this->uid . '_' . $key . '_xwb_face_temp.jpg'; $imgProc->save($this->faceTempPath[$key]); $imgProc = null; //释放资源,让其自动调用__destruct } return 0; }