在DeDeBIZ、DeDeCMS、织梦BIZ、织梦CMS中,能实现API接口调用会员头像。
在织梦首页、列表页、内容页、标签页、搜索页、乃至整个织梦模板中,都能使用标签调用会员头像。为此,我想到了,使用API接口的方式,像QQ号能调用QQ头像那样的接口。
好了,你想实现吗,直接看展示效果吧。
调用标签
/user/image.php?ui=admin
/user/image.php?ui=admin&nk=100
/user/image.php?ui=admin&ng=200
/user/image.php?ui=admin&nk=300&ng=300
注意:支持4种调用方式,你喜欢哪种,那就用哪种。
标签说明
?ui=admin 默认图片大小
?ui=admin&nk=100 等比例,图片宽100px、图片高100px
?ui=admin&ng=200 等比例,图片宽200px、图片高200px
?ui=admin&nk=300&ng=300 指定宽高,图片宽300px、图片高300px
注意:参数值,不是固定的。比如,你可以任意指定图片宽高。
参数说明
ui 登录名,必须写,不然找不到用户
nk 图片宽,非必须,只设置宽,不设置高,就是图片等比例输出。
ng 图片高,非必须,设置宽,设置高,那就是固定图片大小输出。
注意:不设置图片宽,不设置图片高,就是默认的图片大小输出。
教程开始
在 DeDeBIZ 中使用:在 user 目录下,新建一个 image.php 文件,代码如下
<?php /** * @version $id:image.php 8:38 2024年8月6日 NiDeCMS $ * @package NiDeCMS.User * @copyright Copyright (c) 2024 DedeBIZ.COM * @license GNU GPL v2 http://nidecms.com/home * @link http://nidecms.com/ */ error_reporting(0); $userid = isset($_REQUEST['ui']) ? $_REQUEST['ui'] : '';//登录名 $widtnk = isset($_REQUEST['nk']) ? $_REQUEST['nk'] : '';//图片宽 $heigng = isset($_REQUEST['ng']) ? $_REQUEST['ng'] : '';//图片高 if (empty($userid)){ exit('参数不存在!'); } require_once(dirname(__FILE__).'/../system/common.inc.php'); //织梦二次开发获取会员头像 $row = $dsql->GetOne("SELECT face,sex,userid FROM `#@__member` WHERE userid = '{$userid}'"); if ($row['userid'] == ''){ exit('用户不存在!'); } if ($row['face'] == ''){ if ($row['sex']=="男"){ $facea = '/ueditor/asking/img/dfboy.png'; } elseif ($row['sex']=="女"){ $facea = '/ueditor/asking/img/dfgirl.png'; } else { $facea = '/ueditor/asking/img/face.png'; } } else { $facea = str_replace($GLOBALS['cfg_basehost'],'/', $row['face']); } $imagePath = dirname(__FILE__).'/..'.str_replace('//','/', $facea); // 检查文件是否存在 if (!file_exists($imagePath)) { exit('图片文件不存在'); } if ($widtnk == '' && $heigng == ''){ header('Content-Type: image/jpeg'); $fp = fopen($imagePath,'rb'); fpassthru($fp); exit(); } // 尝试根据文件扩展名创建图像资源 $imageInfo = getimagesize($imagePath); $imageType = $imageInfo[2]; // 2 是索引,用于获取图片类型 switch ($imageType) { case IMAGETYPE_GIF: $image = imagecreatefromgif($imagePath); break; case IMAGETYPE_JPEG: $image = imagecreatefromjpeg($imagePath); break; case IMAGETYPE_PNG: $image = imagecreatefrompng($imagePath); break; default: break; } // 设置新的宽度和高度 if($widtnk == ''){ $newWidth = $heigng; $newHeight = $heigng; } elseif ($heigng == ''){ $newWidth = $widtnk; $newHeight = $widtnk; } else { $newWidth = $widtnk; $newHeight = $heigng; } // 创建新的图像资源 $newImage = imagecreatetruecolor($newWidth, $newHeight); // 复制并调整大小 imagecopyresampled($newImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, imagesx($image), imagesy($image)); header('Content-Type: image/jpeg'); // 输出图像到浏览器 imagejpeg($newImage); // 释放内存 imagedestroy($image); imagedestroy($newImage); ?>
这个代码,是在 DeDeBIZ 中测试的。所以,在 DeDeBIZ 中直接使用,但是,在 DeDeCMS 中,只需要改两个地方而已。下面,是在 DeDeCMS 中使用的修改方法。
1、将上面的文件剪切到 member 目录。
2、改一句代码就行了,看到第 16 行
require_once(dirname(__FILE__).'/../system/common.inc.php');
改为
require_once(dirname(__FILE__).'/../include/common.inc.php');
这样就行了。
无需登录,使用接口的方式,优雅的接口,适合高配置、高需求、高追求的站长。
登录后方可回帖