js上传图片预览

来源:互联网 发布:linux怎么查看用户权限 编辑:程序博客网 时间:2024/04/29 02:11
<!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>
0 0
原创粉丝点击