JS仿flash上传头像效果实现代码


Posted in Javascript onJuly 18, 2011

先看效果图(在FF下):

JS仿flash上传头像效果实现代码
下面是我整个的思路:
一、用ajaxFileUpload.js异步上传图片。这个不用多说了,挺简单的东西。
二、div拖拽用jquery-ui。这个也不多说了。
三、上传过图片的处理。

编辑容器是300*300,如果图片不在300*300之内,这里会生成一个maxHeight=300,maxWidth=300的缩略图,
用于设置编辑容器的背景,如果原文件为123.jpg,这里生成的文件为123.jpg.view.jpg,当然,文件123.jpg.view.jpg可能不会生成!
返回数据为{ result:" + result + ",size:" + size + ",msg:\"" + msg + "\",w:" + ww + ",h:" + hh + "}"。
result 是1或0,表是否上传成功,
size 是缩放比率,默认为1,有缩略图时为缩小的倍数,如果缩略到原来的3/4,size为0.75
msg 如果result=1,msg是文件地址,如果result=0,msg是错误信息
w,h是原图的宽高,如果有缩略图,则为缩略图的宽高。
四、选择图片区域

头像目标大小为175*175,编辑时在右边显示。目标头像要随选区的移动而移动,这个可以定位背景要实现,但它还要随选区的大小变化而变化,这个用背景恐怕是难以实现了吧!
反正我是不知道怎么做,所以这里选择用真正的图片,可图片从哪来呢?从服务端来!想必图片验证码大家都熟悉,这里的真正图片就是这样得来的。在选区drag和resize后(当然也可
在进行时请求,效果更动态,不过嘿嘿...),即 stop时要向服务器请求显示的图片,请求数据要包含size,即上面得到的0.75,还有选区的位置和大小。
到服务器后你会发现选区的位置(x,y)和大小(w,h)是针对缩略图的,这时size就有用了,由size缩略,由size还原,真是解玲还需系玲人啊,把x,y,w,h都除以size,得到的位置和大小便对应到原图上了。于是乎,剪切吧!返回吧!好,剪切,返@#!,晕,这里还不能返回呢!因为剪切过后你也不知道大小是不是符合
我们的目标大小(175*175)啊! 所以这里不能急着返回给用户看,还要做最后的包装,把大的压缩,把小的放大,统统成175*175达标后才可返回。于是,
页面上就可以看到我们选区的头像了~
五、确定保存

这里逻辑就简单多了,选择图片区域时我们生成了图片输出到页面,这里我们可以用同样的方法生成图片,保存就OK了,这里还有一个清理操作,
最终的123.jpg是没用的,123.jpg.view.jpg也是没用的,有用的是我们借助123.jpg.view.jpg从132.jpg中抽离出来的456.jpg!
六、整个功能放在一个html里,哪里用,就load到哪里!
js:

$(function() { 
$("#divUp").load("uploadAvatar.htm?n=" + Math.random()); 
}) 
function OnAvatarUploaded(file) { 
$("#img").attr("src", file + "?n=" + Math.random()); //防止缓存 
}

html:
<div style="height: 500px; clear: both; margin: 80px auto; width: 800px;"> 
<div style="width: 175px; height: 175px; float: left; border: 1px solid #ccc;"> 
<img src="" id="img" style="width: 175px; height: 175px" /> 
</div> 
<div id="divUp" style="width: 520px; float: left; margin-left: 20px"> 
</div> 
</div>

*******************
总体思路及步骤到这就完了。
功能没有flash的强大,但一般的上传头像也可以满足了,想生成头像缩略图也很简单,下面会附源码,看一下就知道在哪加了。
handler里代码有点乱,没有整理,不好意思啦!
AvaterUpload_3water.rar
Javascript 相关文章推荐
用javascript控制iframe滚动的代码
Apr 10 Javascript
JavaScript CSS修改学习第一章 查找位置
Feb 19 Javascript
基于jquery的跟随屏幕滚动代码
Jul 24 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
Nov 28 Javascript
JavaScript实现将xml转换成html table表格的方法
Apr 17 Javascript
JavaScript中数据结构与算法(一):栈
Jun 19 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
Feb 16 Javascript
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
使用electron制作满屏心特效的示例代码
Nov 27 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
Apr 10 Javascript
如何在wxml中直接写js代码(wxs)
Nov 14 Javascript
js实现简单放大镜效果
Mar 07 Javascript
js中的string.format函数代码
Aug 11 #Javascript
关于html+ashx开发中几个问题的解决方法
Jul 18 #Javascript
TreeView 用法(有代码)(asp.net)
Jul 15 #Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
Jul 15 #Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 #Javascript
js实现addClass,removeClass,hasClass的函数代码
Jul 13 #Javascript
js下将字符串当函数执行的方法
Jul 13 #Javascript
You might like
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
学习jquery之一
2007/04/27 Javascript
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
Javascript的闭包详解
2014/12/26 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
Angular限制input框输入金额(是小数的话只保留两位小数点)
2017/07/13 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
python读取浮点数和读取文本文件示例
2014/05/06 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
10个示例带你掌握python中的元组
2020/11/23 Python
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
单位绩效考核方案
2014/05/11 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby