Discuz教程网

[二次开发] 我是这样来处理 DISCUZ 一样的头像效果的

[复制链接]
authicon dly 发表于 2012-2-22 00:05:04 | 显示全部楼层 |阅读模式
因为要给博客加上头像系统,看了DISCUZ 的头像系统不错。它有一个分散算法
  1. function get_avatar($uid, $size = ‘middle’) {
  2. $size = in_array($size, array(’big’, ‘middle’, ’small’)) ? $size : ‘middle’;
  3. $uid = abs(intval($uid));
  4. $uid = sprintf(”%09d”, $uid);
  5. $dir1 = substr($uid, 0, 3);
  6. $dir2 = substr($uid, 3, 2);
  7. $dir3 = substr($uid, 5, 2);
  8. return $dir1.’/’.$dir2.’/’.$dir3.’/’.substr($uid, -2).”_avatar_$size.jpg”;
  9. }
复制代码

然后呢,到网上找到了它别人扣出来的flash上传源码。尝试整合到自己的系统中,别人演示好好的。
我一整合进来就报错,不是“文件上传IO错误”,就是“上传有安全问题”

后来又到网上找了不少类似的东西,发现兼容性不好。不敢用,flash这个东东不好整。
打了一个圈,有回来弄discuz这个。于是,我决定不用flash了,到网上找了一个jquery图片裁剪插件来做,也做出了类似的效果。

首先呢,上传一张图片到 一个指定的临时文件夹中。
1108161931f07ab44cb45e6f59.jpg
11081619318f50887640aabec1.jpg

然后,读取临时文件夹中的这个文件,用jquery的Jcrop 图像裁剪插件裁剪。

保存后,裁剪为一个200 * 200 像素的图片,uid_avatar_big.jpg
1108161937c3a406126394531e.jpg
然后将裁剪保存的图片,创建 尺寸为 120×120 48*48 的两个缩略图。uid_avatar_middle.jpg uid_avatar_small.jpg

最后从临时文件创建高清原图 uid_avatar_origin.jpg,最后清理临时文件

这样,得到4张图片 原图 + (200× 200 120×120 48×48) 的头像了。

110816193740ac9a8f4d435c68.jpg
这样,不用flash就可以做出和discuz一样的效果。同时,也不会出现DISCUZ那些问题,discuz官方经常出现头像不能上传的问题。
如果,你有需要的话,可以参考一下哈。




上一篇:Discuz_WIN7_Apache_Mysql_PHP搭建说明
下一篇:Discuz 二次开发添加后台管理模块(转载)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 01:42

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表