本地图片预览

代码一:

 

<input id="myfile" type="file" /> 
<br /> 
<img src="" alt="Image to be upload." onload="javascript:DrawImage(this,200,200)"/> 
<div id="info"></div> 
<script type="text/javascript"> 
var dFile = document.getElementById('myfile'); 
var dImg = document.getElementsByTagName('img')[0]; 
var dInfo = document.getElementById('info'); 
dFile.onchange 
= function()
 
if(!dFile.value.match(/.jpg|.gif|.png|.bmp/i)){alert('File type must be: .jpg, .gif, .bmp or .png !');return;} 
 
if(dFile.files)
  dImg.src 
= dFile.files[0].getAsDataURL(); 
 }
else if(dFile.value.indexOf('\\'> -1 || dFile.value.indexOf('\/'> -1)
  dImg.src 
= dFile.value; 
 }
 
}
 
var flag=false
function DrawImage(ImgD,width,height)
    
var image=new Image(); 
    
var iwidth = width; 
    
var iheight = height; 
    image.src
=ImgD.src; 
    
if(image.width>0 && image.height>0)
        flag
=true
        
if(image.width/image.height>= iwidth/iheight)
            
if(image.width>iwidth)
                ImgD.width
=iwidth; 
                ImgD.height
=(image.height*iwidth)/image.width; 
            }
 
            
else
                ImgD.width
=image.width; 
                ImgD.height
=image.height; 
            }
 
            ImgD.alt
=image.width+"×"+image.height; 
        }
 
        
else
            
if(image.height>iheight)
                ImgD.height
=iheight; 
                ImgD.width
=(image.width*iheight)/image.height; 
            }
 
            
else
                ImgD.width
=image.width; 
                ImgD.height
=image.height; 
            }
 
            ImgD.alt
=image.width+"×"+image.height; 
        }
 
    }
 
}
//<img src="图片" onload="javascript:DrawImage(this,100,100)"> 
</script>

 

代码二:

 

<!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=utf-8" />  
<title>Firefox3,IE6,IE7,IE8上传图片预览</title>  
<style type="text/css">  
#preview_wrapper
{   
    display
:inline-block;   
    width
:300px;   
    height
:300px;   
    background-color
:#CCC;   
}
   
#preview_fake
{ /* 该对象用户在IE下显示预览图片 */   
    filter
:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);   
}
   
#preview_size_fake
{ /* 该对象只用来在IE下获得图片的原始尺寸,无其它用途 */   
    filter
:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);     
    visibility
:hidden;   
}
   
#preview
{ /* 该对象用户在FF下显示预览图片 */   
    width
:300px;   
    height
:300px;   
}
   
</style>  
  
<script type="text/javascript">  
function onUploadImgChange(sender){   
    
if!sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){   
        alert(
'图片格式无效!');   
        
return false;   
    }
   
       
    
var objPreview = document.getElementById( 'preview' );   
    
var objPreviewFake = document.getElementById( 'preview_fake' );   
    
var objPreviewSizeFake = document.getElementById( 'preview_size_fake' );   
       
    
if( sender.files &&  sender.files[0] ){   
        objPreview.style.display 
= 'block';   
        objPreview.style.width 
= 'auto';   
        objPreview.style.height 
= 'auto';   
           
        
// Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径   
        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';   
    }
   
}
   
  
function onPreviewLoad(sender){   
    autoSizePreview( sender, sender.offsetWidth, sender.offsetHeight );   
}
   
  
function autoSizePreview( objPre, originalWidth, originalHeight ){   
    
var zoomParam = clacImgZoomParam( 300300, 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( 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)"/>  
        
</div>  
    
</div>  
    
<br/>  
    
<input id="upload_img" type="file" onchange="onUploadImgChange(this)"/>  
    
<br/>  
    
<img id="preview_size_fake"/>  
</body>  
</html>  

 

 

posted @ 2009-11-13 16:21  朝夕  阅读(2262)  评论(0编辑  收藏  举报