PHPCMS X

在PHPCMS中修改会员头像上传尺寸:
在PHPCMS的会员中心中,会员可以上传头像图片,但PHPCMS里头像上传后是生成几种固定尺寸的头像图片,如果需要适应不同页面调用尺寸,我们可能需要对头像图片的尺寸做出改变,看本文介绍如何修改

在PHPCMS中修改会员头像上传尺寸
在PHPCMS的会员中心中,会员可以上传头像图片,但PHPCMS里头像上传后是生成几种固定尺寸的头像图片,如果需要适应不同页面调用尺寸,我们可能需要对头像图片的尺寸做出改变,看本文介绍如何修改
2020-08-15 23:48:20  来源:PHPCMSX

找到 /phpsso_server/phpcms/modules/phpsso/index.php

/**
    *上传头像处理
    *传入头像压缩包,解压到指定文件夹后删除非图片文件
*/
public function uploadavatar() {
    //根据用户id创建文件夹
    if(isset($this->data['uid']) && isset($this->data['avatardata'])) {
        $this->uid = intval($this->data['uid']);
        $this->avatardata = $this->data['avatardata'];
    }else{
	exit('0');
    }
    $dir1 = ceil($this->uid / 10000);
    $dir2 = ceil($this->uid % 10000 / 1000);
    //创建图片存储文件夹
    $avatarfile = pc_base::load_config('system', 'upload_path').'avatar/';
    $dir = $avatarfile.$dir1.'/'.$dir2.'/'.$this->uid.'/';
    if(!file_exists($dir)) {
        mkdir($dir, 0777, true);
    }
    //存储flashpost图片
    $filename = $dir.'80x80.jpg';
    $fp = fopen($filename, 'w');
    fwrite($fp, $this->avatardata);
    fclose($fp);
    $avatararr = array('80x80.jpg', '30x30.jpg', '50x50.jpg');
    $files = glob($dir."*");
    foreach($files as $_files) {
        if(is_dir($_files)) dir_delete($_files);
	if(!in_array(basename($_files), $avatararr)) @unlink($_files);
    }
    if($handle = opendir($dir)) {
        while(false !== ($file = readdir($handle))) {
	if($file !== '.' && $file !== '..') {
	    if(!in_array($file, $avatararr)) {
		@unlink($dir.$file);
	    }else{
                $info = @getimagesize($dir.$file);
		if(!$info || $info[2] !=2) {
		    @unlink($dir.$file);
                }
	    }
        }
    }
    closedir($handle); 
    }
    pc_base::load_sys_class('image','','0');
    $image = new image(1,0);
    $image->thumb($filename, $dir.'30x30.jpg', 30, 30);
    $image->thumb($filename, $dir.'50x50.jpg', 50, 50);
    $this->db->update(array('avatar'=>1), array('uid'=>$this->uid));
    exit('1');
}

找到phpcms/modules/member/classes/client.class.php

/**
    * 根据phpsso uid获取头像url
    * @param int $uid 用户id
    * @return array 四个尺寸用户头像数组
*/
public function ps_getavatar($uid) {
    $dir1 = ceil($uid / 10000);
    $dir2 = ceil($uid % 10000 / 1000);
    $url = $this->ps_api_url.'/uploadfile/avatar/'.$dir1.'/'.$dir2.'/'.$uid.'/';
    $avatar = array('80'=>$url.'80x80.jpg', '50'=>$url.'50x50.jpg', '30'=>$url.'30x30.jpg');
	return $avatar;
    }

前台模板修改对应的{$avatar[80]}中的数字即可