需要解决的问题有:本地图片如何在上传前预览、编辑;
最近发现这个功能很多是基于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之后
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