<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    兼容IE8、火狐的本地圖片預覽+等比例縮放

    Posted on 2011-06-16 18:13 semovy 閱讀(687) 評論(0)  編輯  收藏 所屬分類: JavaScriptCSS式樣
    轉自http://it.oyksoft.com/post/974/


    <!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( 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( 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>
    主站蜘蛛池模板: 亚洲成a人无码亚洲成www牛牛| 亚洲成?v人片天堂网无码| 亚洲国产激情在线一区| 性做久久久久免费看| 久久精品成人免费观看97| 亚洲白色白色永久观看| 国产大片线上免费看| 一级毛片aaaaaa免费看| 亚洲av日韩aⅴ无码色老头| 国产亚洲一区二区手机在线观看 | 亚洲精品国精品久久99热一| 91免费人成网站在线观看18| 免费观看亚洲人成网站| 久久精品国产亚洲AV无码偷窥 | 亚洲av无码专区国产乱码在线观看| 国产片AV片永久免费观看| jizz中国免费| 亚洲熟伦熟女专区hd高清| 亚洲成A人片777777| 日本久久久免费高清| 69av免费观看| 国产国产人免费人成成免视频 | 日本免费在线中文字幕| 亚洲日韩在线中文字幕综合| 亚洲精品国产啊女成拍色拍| 亚洲五月午夜免费在线视频| 性一交一乱一视频免费看| 日韩内射激情视频在线播放免费 | 久久久久亚洲精品成人网小说| 日本一区免费电影| xxxx日本免费| 国产成人无码区免费网站| 国产亚洲福利一区二区免费看| 亚洲一区在线免费观看| 亚洲国产综合91精品麻豆| 亚洲国产精品综合久久网络 | 国产乱辈通伦影片在线播放亚洲 | 久久亚洲国产成人影院| 亚洲国产一区在线| 九月丁香婷婷亚洲综合色| 亚洲国产主播精品极品网红|