因为要给博客加上头像系统,看了DISCUZ 的头像系统不错。它有一个分散算法
- function get_avatar($uid, $size = ‘middle’) {
- $size = in_array($size, array(’big’, ‘middle’, ’small’)) ? $size : ‘middle’;
- $uid = abs(intval($uid));
- $uid = sprintf(”%09d”, $uid);
- $dir1 = substr($uid, 0, 3);
- $dir2 = substr($uid, 3, 2);
- $dir3 = substr($uid, 5, 2);
- return $dir1.’/’.$dir2.’/’.$dir3.’/’.substr($uid, -2).”_avatar_$size.jpg”;
- }
复制代码
然后呢,到网上找到了它别人扣出来的flash上传源码。尝试整合到自己的系统中,别人演示好好的。
我一整合进来就报错,不是“文件上传IO错误”,就是“上传有安全问题”
后来又到网上找了不少类似的东西,发现兼容性不好。不敢用,flash这个东东不好整。
打了一个圈,有回来弄discuz这个。于是,我决定不用flash了,到网上找了一个jquery图片裁剪插件来做,也做出了类似的效果。
首先呢,上传一张图片到 一个指定的临时文件夹中。
然后,读取临时文件夹中的这个文件,用jquery的Jcrop 图像裁剪插件裁剪。
保存后,裁剪为一个200 * 200 像素的图片,uid_avatar_big.jpg
然后将裁剪保存的图片,创建 尺寸为 120×120 48*48 的两个缩略图。uid_avatar_middle.jpg uid_avatar_small.jpg
最后从临时文件创建高清原图 uid_avatar_origin.jpg,最后清理临时文件
这样,得到4张图片 原图 + (200× 200 120×120 48×48) 的头像了。
这样,不用flash就可以做出和discuz一样的效果。同时,也不会出现DISCUZ那些问题,discuz官方经常出现头像不能上传的问题。
如果,你有需要的话,可以参考一下哈。
|