您的位置:首页 > Web前端 > JavaScript

js上传图片预览

2015-09-10 16:01 543 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>JS获得鼠标位置(兼容多浏览器ie,firefox)脚本之家修正版</title>

<script>

function onUploadImgChange(sender,view1,view2,view3,reduce,w,h){

if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){

alert('图片格式无效!');

return false;

}

var objPreview = document.getElementById(view1); //

var objPreviewFake = document.getElementById(view2);//

var objPreviewSizeFake = document.getElementById(view3);

if( sender.files && sender.files[0] ){

objPreview.style.display = 'block';

objPreview.style.width ='auto';

objPreview.style.height = 'auto';

// Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径

var file;

var objectURL;

//判断浏览器是否属于Mozilla,Sofari

if(window.XMLHttpRequest){

objectURL = window.URL.createObjectURL(sender.files[0]);

objPreview.src = objectURL;

}else if(window.ActiveXObject){//IE

objPreview.src = sender.files[0].getAsDataURL();

}

}else if( objPreviewFake.filters ){

// IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果

//(相同环境有时能显示,有时不显示),因此只能用滤镜来解决

// IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径

sender.select();

var imgSrc = document.selection.createRange().text;

objPreviewFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;

objPreviewSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;

autoSizePreview( objPreviewFake,objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight);

objPreview.style.display = 'none';

}

}

//加载图片显示 比例设置

//sender reduce_w 宽度缩小为原来的几倍

//reduce_h 高度缩小为原来的几倍

function onPreviewLoad(sender,reduce_w,reduce_h){

autoSizePreview( sender, sender.offsetWidth/reduce_w, sender.offsetHeight/reduce_h);

}

//高宽度设置

function onPreviewLoad_(sender,w,h){

autoSizePreview( sender, w, h);

}

//originalWidth 控制显示图片的宽度 originalHeight 控制显示图片的高度

function autoSizePreview( objPre, originalWidth, originalHeight){

var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight );

objPre.style.width = zoomParam.width + 'px';

objPre.style.height = zoomParam.height + 'px';

objPre.style.marginTop = zoomParam.top + 'px';

objPre.style.marginLeft = zoomParam.left + 'px';

}

function clacImgZoomParam_(position_){

}

//maxWidth,maxHeight 显示图片的位置

function clacImgZoomParam( maxWidth, maxHeight, width, height ){

var param = { width:width, height:height, top:0, left:0 };

if( width>maxWidth || height>maxHeight ){

rateWidth = width / maxWidth;

rateHeight = height / maxHeight;

if( rateWidth > rateHeight ){

param.width = maxWidth;

param.height = height / rateWidth;

}else{

param.width = width / rateHeight;

param.height = maxHeight;

}

}

param.left = (maxWidth - param.width) / 2;

param.top = (maxHeight - param.height) / 2;

return param;

}

</script>

</head>

<body>

<div id="preview_wrapper">

<div id="preview_fake">

<img id="preview" onload="onPreviewLoad_(this,200,200)"/>

</div>

</div>

<br/>

<input id="upload_img" type="file" onchange="onUploadImgChange(this,'preview','preview_fake','preview_size_fake')"/>

<br/>

<img id="preview_size_fake"/>

</body>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: