Snoopy
Snoopy
  • 发布:2015-11-30 17:52
  • 更新:2018-12-14 10:40
  • 阅读:12777

previewimage 图片预览插件点击查看大图 图片被翻转了

分类:MUI

previewimage 图片预览插件点击查看大图 图片被翻转了,图片是从手机相册中获取的路径。
点开之后用两指放大,松手之后会缩小为原来的状态。

以下代码是修改的mui的官方demo里面的 imageviewer.html。

<html>  

    <head>  
        <meta charset="utf-8">  
        <title>Hello MUI</title>  
        <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">  
        <meta name="apple-mobile-web-app-capable" content="yes">  
        <meta name="apple-mobile-web-app-status-bar-style" content="black">  
        <!--标准mui.css-->  
        <link rel="stylesheet" href="../css/mui.min.css">  
        <!--App自定义的css-->  
        <style type="text/css">  
            .mui-preview-image.mui-fullscreen {  
                position: fixed;  
                z-index: 20;  
                background-color: #000;  
            }  
            .mui-preview-header,  
            .mui-preview-footer {  
                position: absolute;  
                width: 100%;  
                left: 0;  
                z-index: 10;  
            }  
            .mui-preview-header {  
                height: 44px;  
                top: 0;  
            }  
            .mui-preview-footer {  
                height: 50px;  
                bottom: 0px;  
            }  
            .mui-preview-header .mui-preview-indicator {  
                display: block;  
                line-height: 25px;  
                color: #fff;  
                text-align: center;  
                margin: 15px auto 4;  
                width: 70px;  
                background-color: rgba(0, 0, 0, 0.4);  
                border-radius: 12px;  
                font-size: 16px;  
            }  
            .mui-preview-image {  
                display: none;  
                -webkit-animation-duration: 0.5s;  
                animation-duration: 0.5s;  
                -webkit-animation-fill-mode: both;  
                animation-fill-mode: both;  
            }  
            .mui-preview-image.mui-preview-in {  
                -webkit-animation-name: fadeIn;  
                animation-name: fadeIn;  
            }  
            .mui-preview-image.mui-preview-out {  
                background: none;  
                -webkit-animation-name: fadeOut;  
                animation-name: fadeOut;  
            }  
            .mui-preview-image.mui-preview-out .mui-preview-header,  
            .mui-preview-image.mui-preview-out .mui-preview-footer {  
                display: none;  
            }  
            .mui-zoom-scroller {  
                position: absolute;  
                display: -webkit-box;  
                display: -webkit-flex;  
                display: flex;  
                -webkit-box-align: center;  
                -webkit-align-items: center;  
                align-items: center;  
                -webkit-box-pack: center;  
                -webkit-justify-content: center;  
                justify-content: center;  
                left: 0;  
                right: 0;  
                bottom: 0;  
                top: 0;  
                width: 100%;  
                height: 100%;  
                margin: 0;  
                -webkit-backface-visibility: hidden;  
            }  
            .mui-zoom {  
                -webkit-transform-style: preserve-3d;  
                transform-style: preserve-3d;  
            }  
            .mui-slider .mui-slider-group .mui-slider-item img {  
                width: auto;  
                height: auto;  
                max-width: 100%;  
                max-height: 100%;  
            }  
            .mui-android-4-1 .mui-slider .mui-slider-group .mui-slider-item img {  
                width: 100%;  
            }  
            .mui-android-4-1 .mui-slider.mui-preview-image .mui-slider-group .mui-slider-item {  
                display: inline-table;  
            }  
            .mui-android-4-1 .mui-slider.mui-preview-image .mui-zoom-scroller img {  
                display: table-cell;  
                vertical-align: middle;  
            }  
            .mui-preview-loading {  
                position: absolute;  
                width: 100%;  
                height: 100%;  
                top: 0;  
                left: 0;  
                display: none;  
            }  
            .mui-preview-loading.mui-active {  
                display: block;  
            }  
            .mui-preview-loading .mui-spinner-white {  
                position: absolute;  
                top: 50%;  
                left: 50%;  
                margin-left: -25px;  
                margin-top: -25px;  
                height: 50px;  
                width: 50px;  
            }  
            .mui-preview-image img.mui-transitioning {  
                -webkit-transition: -webkit-transform 0.5s ease, opacity 0.5s ease;  
                transition: transform 0.5s ease, opacity 0.5s ease;  
            }  
            @-webkit-keyframes fadeIn {  
                0% {  
                    opacity: 0;  
                }  
                100% {  
                    opacity: 1;  
                }  
            }  
            @keyframes fadeIn {  
                0% {  
                    opacity: 0;  
                }  
                100% {  
                    opacity: 1;  
                }  
            }  
            @-webkit-keyframes fadeOut {  
                0% {  
                    opacity: 1;  
                }  
                100% {  
                    opacity: 0;  
                }  
            }  
            @keyframes fadeOut {  
                0% {  
                    opacity: 1;  
                }  
                100% {  
                    opacity: 0;  
                }  
            }  
            p img {  
                max-width: 100%;  
                height: auto;  
            }  
        </style>  

    </head>  

    <body>  
        <header class="mui-bar mui-bar-nav">  
            <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>  
            <h1 class="mui-title">image viewer(图片预览)</h1>  
        </header>  
        <div class="mui-content">  
            <div class="mui-content-padded" id="imgContainer">  
                <p>这是图片放大预览示例,点击如下图片体验全屏预览功能</p>  
                <p>  
                    <img src="../images/IMG_2318.JPG" data-preview-src="" data-preview-group="1" onload="onReady(this)"/>  
                </p>  
                <p>图片全屏后,双击或双指缩放均可对图片进行放大、缩小操作,左右滑动可查看同组(data-preview-group相同的图片为一组)其它图片,点击会关闭预览</p>  
                <p>  
                    <img src="../images/IMG_2319.JPG" data-preview-src="" data-preview-group="1" onload="onReady(this)"/>  
                </p>  
                <p>第三张图片,纯粹为了占位: </p>  
                <p>  
                    <img src="../images/shuijiao.jpg" data-preview-src="" data-preview-group="1" onload="onReady(this)"/>  
                </p>  
            </div>  
        </div>  
    </body>  
    <script src="../js/mui.min.js"></script>  
    <script src="../js/mui.zoom.js"></script>  
    <script src="../js/mui.previewimage.js"></script>  
    <script>  
        var imageRenderTemplate = '<p><img src="{0}" data-preview-src="" data-preview-group="1" onload="onReady(this)"/></p>';  
        var imgContainer = document.getElementById("imgContainer");  
        imgContainer.addEventListener("tap",pickPhotos);  
        String.prototype.fillData = function(key, value) {  
            return this.replace(new RegExp("\\{" + key + "\\}", "g"), value);  
        }  
        mui.previewImage();  
        function onReady(item){  
                var scaleX = 60 / item.width;  
                var scaleY = 60 / item.height;  
                var scale = Math.max(scaleX , scaleY );  

                item.width = Math.ceil( item.width * scale);  

            }  
        function pickPhotos(item){  
            var btns = [{title:"拍照"},{title:"从相册选择"}];  
            plus.nativeUI.actionSheet({cancel:"取消",buttons:btns},  
                function(e){  
                    var i=e.index;  
                    if(i>0){  
                        photoAction(i-1);  
                    }  
                }  
            );  
        }  

        function photoAction(index){  
                if( index == 0 ){  
                    getImage();  
                }else{  
                    galleryImgs();  
                }  
            }  

        //拍照  
            function getImage() {  
                var cmr = plus.camera.getCamera();  
                cmr.captureImage( function (p) {  
                    plus.io.resolveLocalFileSystemURL( p, function ( entry ) {      
                        var localurl = entry.toLocalURL();  
                        addImage(localurl);  
                    });  
                });  
            }  
            //相册选取  
            function galleryImgs(){  
                plus.gallery.pick( function(e){  
                   for(var i in e.files){  
                        addImage(e.files[i]);  
                    }  
                }, function ( e ) {  
                },{filter:"image",multiple:true});  
            }  

            function addImage(url){  
                var render = imageRenderTemplate;  
                    render = render.fillData(0,url);  
                    imgContainer.innerHTML += render;  
            }  
    </script>  

</html>
2015-11-30 17:52 1 条评论 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

你这是从相册里取出来的?然后预览看的?

  • Snoopy (作者)

    从相册获取的绝对路径。

    2015-11-30 22:50

  • Snoopy (作者)

    貌似只有尺寸很大的图片才会出现这种情况 宽:2448 高:3264

    2015-12-01 01:57

  • Snoopy (作者)

    先是翻转的状态,过几秒又会翻回来。

    2015-12-01 01:59

  • Snoopy (作者)

    测试代码已经编辑到问题贴中了,请查看。

    2015-12-01 10:44

wei_pear

wei_pear

为何我的image viewer没反应

3***@qq.com

3***@qq.com

 <script src="../js/mui.zoom.js"></script>  
    <script src="../js/mui.previewimage.js"></script>

请问这两个插件在哪里下载啊?

3***@qq.com

3***@qq.com

你好,请问这个问题你解决了吗?

颜培红

颜培红 -

楼主,删除操作怎么做的,求啊~

该问题目前已经被锁定, 无法添加新回复