我正在开发elgg中的插件,其中包含一些用于个人资料图标的图像。 在该插件中,单个图像有各种大小的文件,例如
train.jpg = Height : 100px || Width : 100px
train_25px.jpg = Height : 25px || Width : 25px
如上所述我已经裁剪过图像。大概有25 images + 25 cropped images
我想为每个用户定义一个图像并随时调用图像而不在另一个位置重新创建相同的图像
例如:
原始位置:sitepath/mod/plugin_name/graphic/profile_icon1/master.jpg
用户图片位置:site_temp_path/year/month/user_guid/master.jpg
我的php功能是
global $CONFIG;
function identicon_init() {
extend_view('profile/editicon', 'identicon/editicon');
register_action('identicon/preference', false, $CONFIG->pluginspath . 'identicon/actions/preference.php');
register_plugin_hook('entity:icon:url', 'user', 'identicon_usericon_hook', 900);
}
function identicon_usericon_hook($hook, $entity_type, $returnvalue, $params) {
if (($hook == 'entity:icon:url') && ($params['entity'] instanceof ElggUser)) {
$ent = $params['entity'];
if ($ent->preferIdenticon || !$returnvalue) {
return identicon_url($ent, $params['size']);
}
} else {
return $returnvalue;
}
}
function identicon_url($ent, $size) {
global $CONFIG;
return $CONFIG->wwwroot . 'mod/fp_auto_profile_image/img.php?entity=' . $ent->getGUID() . '&size=' . $size;
}
register_elgg_event_handler('init','system','identicon_init');
答案 0 :(得分:1)
使用elgg_get_data_path()而不是$ CONFIG-> wwwroot
然后创建icon.php并返回identicon_usericon_hook中icon.php的路径以及所需的和大小 然后在icon.php中有这段代码
$news_guid = get_input('guid');
$contents = readfile(filepath);
$size = strtolower(get_input('size'));
if (!in_array($size, array('large', 'medium', 'small', 'tiny', 'master', 'topbar')))
$size = "large";
header("Content-type: image/jpeg");
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+10 days")), true);
header("Pragma: public");
header("Cache-Control: public");
header("Content-Length: " . strlen($contents));
header("ETag: \"$etag\"");
echo $contents;