`
csstome
  • 浏览: 1541322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

独立Discuz头像编辑模块

 
阅读更多

摘要:在Discuz产品系列(包括UCenter、UCHome)中有一个flash头像上传编辑的功能比较好用,和之前自己用js实现的照片在线编辑插件比较像,于是想将它独立出来,一方面可以学习研究,另一方面有机会可以在项目中使用(这里主要是指Asp.Net程序,php的与之类似)。

主要内容:

  1. 版权声明
  2. 头像上传和编辑的原理
  3. 独立头像上传及编辑模块

一、版权声明

由于此模块核心均来自于Discuz NT,根据相关规定:"禁止在 Discuz! / UCenter 的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。"
因此在开始下面的内容之前声明如下:

本程序仅为个人学习研究,不以营利为目的,如若侵犯他人利益,请发送邮件KenshinCui@hotmail.com联系作者,本人获得通知后立即删除相关内容,其他第三方下载者或使用者在使用时注意其内容版权归北京康盛新创科技有限责任公司所有。

二、头像上传和编辑的原理

在Discuz中头像上传和编辑主要通过flash来完成,它处理了包括文件上传和裁切的主要核心工作,但是我们这里没有.fla源文件,只有.swf文件,所以要弄清其原理就必须跟踪相关的接口调用。

在此之前我们首先需要了解在Discuz中flash的页面代码是通过document.write动态生成的,其中的输出的字符串是通过调用AC_FL_RunContent()这个js方法(这个方法在common.js中)。它主要是生成相关falsh的html布局代码,结构大致如下:

在上面的代码中最重要的就是movie参数,它定义了头像名称、裁切上传api路径以及flash所在路径等。

有了这些信息之后我们只需要了解相关接口调用接口,这时我们可以打开fiddler进行跟踪:

fiddler1

在首次到达头像修改界面的时候访问了/images/common/camera.swf?nt=1&inajax=1&appid=1036681732c9187901d4693bf1ab8416&input=DCdSBXIA4rY=&ucapi=http%3a%2f%2f192.168.1.92%3a312%2ftools%2fajax.aspx

这就是上面我们说的movie参数的值,由于像input(后面我们会发现它就是头像图片的名称)等信息需要是动态设定的,所以Discuz设计的时候采用动态生成js的方法。

接着我们上传一张照片:

fiddler2

从跟踪可以看到访问路径/tools/ajax.aspx?m=user&inajax=1&a=uploadavatar&appid=1036681732c9187901d4693bf1ab8416&input=DCdSBXIA4rY%3D&agent=null&avatartype=null,它是主要负责处理照片上传的,其中的a参数告诉ajax.aspx执行何种操作(事实上后面我们会发现a为uploadavatar则执行上传操作),input参数同上面一样,是头像图片的名称。

然后我们执行裁切:

fiddler3

从Fiddler中我们可以看到请求路径为/tools/ajax.aspx?m=user&inajax=1&a=rectavatar&appid=1036681732c9187901d4693bf1ab8416&input=DCdSBXIA4rY%3D&agent=null&avatartype=null,这是a参数变成了rectavatar,其他信息基本和上一步操作一致,经过分析我们可以看到这一步对应的是裁切保存操作。

有了上面的分析我们可以大概了解到在Discuz中整个头像上传及编辑功能大概的原理,我们发现在代码实现部分主要就是ajax.aspx这个页面,因此我们可以打开这个页面对其进行修改去掉同Discuz自身业务无关的东西,形成一个独立的小组件。

三、独立头像上传及编辑模块

有了上面的分析之后我们要独立上传模块并不太难。首先我们可以将ajax.aspx独立出来去掉其中和具体业务有关的代码,只保留上传和保存操作,并将其路径设计为可配置的。其次我们可以将动态生成flash布局代码的方式改为静态的,因为对我们来说其他参数都不重要,重要的就是图片保存名称而已,这个过程中我们经过加工可以将其网络路径设置为动态获取的(原来Discuz中是在安装过之后设置死的)。最后我们将flash其相关文件拷贝到项目中就可以了,这其中除了.swf文件还有多国原因包用到的locale.xml,以及本地跨域文件crossdomain.xml。

OK,说了那么多下面看看我们独立出来的模块如何使用吧。

首先这个独立头像编辑模块目录结构如下:

directory

使用时只需要拷贝bin中的PhotoEditor.dll拷贝到站点bin目录中;将crossdomin.Js、Ajax.aspx、photoEdit.htm、js目录、images目录放到站点根目录中,然后在Web.config添加如下配置:

当然其中的图片路径即生成的照片路径都可以根据情况修改的。

在使用过程中只需要调用photoEdit.js中的SetPhotoName()传递图片名称即可(可以通过后两个参数设置flash存放路径和Ajax.aspx地址):

另外SetPhotoName()方法还有两个可选参数,那就是flash文件的路径和处理上传和裁切的Ajax.aspx路径,换句话说这两个路径也是可以随意放的。

下面看看实际效果(通过"拍摄照片"的方式上传和编辑照片的截图比较类似就不再截图了):

上传一张照片:

upload

执行裁切操作:

cut

裁切后生成三种尺寸的图片:

complted

OK,今天就到这里吧!模块下载: download

知识共享许可协议 作品采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,演绎或用于商业目的。但转载请注明来自崔江涛(KenshinCui),并包含相关链接。
分享到:
评论
1 楼 xlaohe1 2012-03-15  
LZ,我看你的博客,我一直担心你的头像会转过头来、、、  

相关推荐

    asp.net 独立Discuz头像编辑模块分离打包

    主要内容: 版权声明 头像上传和编辑的原理 独立头像上传及编辑模块 一、版权声明 由于此模块核心均来自于Discuz NT,根据相关规定:”禁止在 Discuz! / UCenter 的整体或任何部分基础上以发展任何派生版本、修改...

    discuz如何编辑模块,以文章模块为例说明.pdf

    在Discuz中,编辑模块是一项重要的功能,可以帮助管理员定制论坛的布局和内容展示。本篇文章将以文章模块为例,详细讲解如何在Discuz中编辑模块。 首先,模块属性是每个模块的基础配置,包括模块标识、模块分类、...

    Discuz!头像库4445张.zip

    头像库4445张.zip"所代表的是一个专门为Discuz!论坛系统准备的头像资源集合。Discuz!是一款非常流行的开源社区论坛软件,它为用户提供了丰富的功能和自定义选项,包括个性化头像设置。 【描述】中的“各类头像库...

    discuz论坛插件DZ插件 头像装饰

    本文将详细讲解“Discuz论坛插件DZ插件 头像装饰”这一主题,帮助您了解如何通过插件来个性化您的Discuz!论坛用户的头像,提升社区的互动性和趣味性。 一、Discuz!论坛插件概述 Discuz!论坛支持各种插件的安装,...

    discuz X2 发布模块

    X2 发布模块是Discuz!社区软件的一个重要组成部分,主要负责社区内容的创建和管理。Discuz! 是一款广泛使用的开源论坛系统,它提供了丰富的功能和灵活的扩展性,使得用户可以轻松搭建自己的在线论坛。在这个特定的...

    仿discuz头像上传,大中小头像

    在IT行业中,论坛系统是社区互动的重要平台,而头像是用户在这些系统中展示自我身份的一种方式。Discuz! 是一款非常流行的开源社区论坛软件,它提供了完善的用户头像管理功能,包括大、中、小三种尺寸的头像。本教程...

    分离DISCUZ论坛的头像上传插件

    标题中的“分离DISCUZ论坛的头像上传插件”是指一种专为DISCUZ论坛设计的第三方插件,它的主要功能是独立处理用户头像的上传操作,从而与论坛的其他部分进行分离,提高系统性能和用户体验。DISCUZ是一款广泛使用的...

    discuz可视化编辑器

    "Discuz可视化编辑器"是Discuz论坛系统中的一部分,主要用于帮助用户在发布帖子或编辑内容时,提供一个直观、易用的界面,使得非编程背景的用户也能轻松进行格式化和美化文本。这个编辑器增强了用户体验,简化了内容...

    discuz门户模块

    其中,"门户模块"是Discuz! 提供的一种重要功能,它为社区网站提供了构建新闻资讯、专题报道等门户类内容的能力,使得Discuz! 不仅仅是一个纯粹的论坛系统,还能成为一个综合性的信息平台。 门户模块主要包含以下几...

    discuz头像上传

    本文将深入探讨如何实现Discuz头像上传功能,并解析与之相关的文件及其作用。 首先,我们来看一下提供的压缩包文件: 1. **noavatar_big.gif、noavatar_middle.gif、noavatar_small.gif**:这些文件是默认无头像的...

    discuz论坛插件DZ插件 品牌123-商讯模块 商讯模块 1.005 X3支持

    《Discuz论坛插件:品牌123-商讯模块详解》 Discuz! 是一款广泛应用的开源社区论坛系统,以其强大的功能和易用性深受广大站长喜爱。在这个标题为“Discuz论坛插件DZ插件 品牌123-商讯模块 商讯模块 1.005 X3支持”...

    discuz里上传头像FLASH控件java版

    文件名“dz”可能指的是“Discuz”的缩写,可能包含了整个论坛系统的源代码或者特定模块,如上传功能相关的代码。在这样的压缩包中,我们可能找到与头像上传控件相关的配置文件、Action类(处理上传请求的Java类)、...

    帖子页面显示作者头像(左侧版)插件 for discuz 7.0.rar

    "帖子页面显示作者头像(左侧版)插件 for Discuz 7.0" 是针对该版本Discuz!设计的一个功能增强型插件。这个插件的主要目的是优化用户在浏览论坛帖子时的体验,通过在帖子页面的左侧展示作者头像,让信息更直观,增加...

    discuz 截取头像

    《Discuz头像截取与缩略技术解析》 在互联网社区建设中,用户头像是构建个人形象的重要元素,Discuz作为一款广受欢迎的开源论坛系统,其头像功能的实现方式是许多开发者关注的焦点。本文将深入探讨从Discuz(DX)中...

    Discuz! X2.5 添加自定义数据调用模块(简单方法)

    ### Discuz! X2.5 添加自定义数据调用模块(简单方法) #### 知识点一:Discuz! X2.5 平台简介 Discuz! 是一款由Comsenz公司开发的通用社区系统软件,是全球范围内非常受欢迎的论坛程序之一。X2.5版本是该系列中的...

    javascript 仿Discuz头像信息提示效果

    在JavaScript编程领域,实现"仿Discuz头像信息提示效果"是一种常见的交互设计,它能够为网站用户提供更直观、友好的社区体验。Discuz是一款知名的社区论坛系统,其头像信息提示功能允许用户鼠标悬停在头像上时,显示...

    discuz 左边头像

    "discuz 左边头像"这个主题主要涉及到的是如何美化论坛中用户头像的显示方式,特别是将头像设置在用户名左侧,提升论坛的整体美观度。 首先,我们需要理解Discuz的模板机制。Discuz采用了一种名为"模板引擎"的技术...

    【头像装饰】discuz插件,商业版免费分享

    【头像装饰】Discuz插件是一款专为Discuz论坛系统设计的商业级增强功能组件,它提供了丰富的头像定制选项,使用户能够在论坛中展示更加个性化和有趣的头像。这款插件适用于DiscuzX3.0、3.1以及2.5等多个版本,兼容性...

Global site tag (gtag.js) - Google Analytics