需要解决的问题有:本地图片如何在上传前预览、编辑;
最近发现这个功能很多是基于flash实现的,很多JavaScript实现的代码兼容性都很差,特别是在IE和firefox和chrome三个浏览器上不兼容。
代码实现主要利用到jquery插件imgAreaSelect,FileReader对象(chrome和ff获取本地图片数据的接口),IE滤镜效果。
关键词:imgAreaSelect FileReaderdocument.selection.createRange() IE滤镜效果
一、实现上传前预览
1.1、页面显示
代码1-1显示的是html需要展示的web页面信息
03 |
<img id="biuuu"src="#" title="biuuu"> |
06 |
<div id =”upload_area”> |
07 |
<form name = "form1"action =' /person?c=changeAtvatar' enctype = 'multipart/form-data'method = 'POST'> |
08 |
<input type="file"id="picpath" name="atvatar_image"> |
09 |
<a href="javascript:void(0);"class="button"> 上传照片</a> |
10 |
<input type='text'name="path" readonly> |
11 |
<div id = “submit_button”> |
12 |
<a href="javascript:void(0);"class='button'>确认</a> |
代码1-1
为了修改input file的按钮名称,我们添加了一段代码,这个在第二节将会详细说明
1 |
<a href="javascript:void(0);" class="button">上传照片</a> |
2 |
<input type='text'name="path" readonly> |
1.2、实现预览在线编辑
这里我们主要使用了一个插件进行图片编辑,如果需要具体查看学习可查看网址
http://odyniec.net/projects/imgareaselect/,使用方法还是很简单方便的。
01 |
$('#biuuu').imgAreaSelect({ |
10 |
keys: { arrows: 1,ctrl: 5, shift: 'resize' }, |
12 |
onSelectChange:preview |
代码1-2
代码1-2主要是设置需要编辑图片的一些插件属性,具体查看插件的参量说明。
首先我们需要创建一个预览小图片在img之后
1 |
$('<div><imgid="view" src='+atvatarUrl+' style="position: relative;"/></div>') |
8 |
}).insertAfter('#biuuu'); |
代码1-3
代码1-3是创建一个小预览图片在img之后
1.3、实现在线预览功能
01 |
function previewImage(file) |
03 |
var porImg = $('#biuuu'), |
06 |
if (file["files"] && file["files"][0]) |
09 |
var reader = newFileReader(); |
10 |
reader.onload =function(evt){ |
11 |
porImg.attr({src :evt.target.result}); |
12 |
viewImg.attr({src: evt.target.result}); |
14 |
reader.readAsDataURL(file.files[0]); |
17 |
function previewImage(file) |
19 |
var porImg = $('#biuuu'), |
22 |
if (file["files"] && file["files"][0]) |
25 |
var reader = newFileReader(); |
26 |
reader.onload =function(evt){ |
27 |
porImg.attr({src :evt.target.result}); |
28 |
viewImg.attr({src: evt.target.result}); |
30 |
reader.readAsDataURL(file.files[0]); |
36 |
var ieImageDom =document.createElement("div"); |
37 |
var proIeImageDom =document.createElement("div"); |
45 |
}).attr({"id":"view"}); |
46 |
$(proIeImageDom).attr({"id":"biuuu"}); |
48 |
porImg.parent().prepend(proIeImageDom); |
50 |
viewImg.parent().append(ieImageDom); |
54 |
path =document.selection.createRange().text; |
55 |
$(ieImageDom).css({"filter":"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src=\""+ path + "\")"}); |
56 |
$(proIeImageDom).css({"filter":"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src=\""+ path + "\")"}); |
这样就可以实现一个图片的在线编辑以及上传在预览功能。
要注意,代码必须要使用客户端访问,例如:http://loacalhost/imgpreview/index.html,不要直接点击index.html访问
代码下载
转自:http://blog.csdn.net/danhuang2012/article/details/7703606