社交分享Cordova插件

wztqucjr  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(260)

我正在使用Social Share PluginImageFilter Plugin。我已经设置好并正在运行。我想做的是从我的照片库中选择一张照片或用相机拍摄的照片作为共享的照片,而不是预定义的图像。

<!DOCTYPE html>
<html>
  <head>
  <title></title>

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
<meta charset="utf-8">

<link rel="stylesheet" href="css/style.css">

<!-- CORE -->
<script src='js/core/cordova-1.6.0.js'></script>
<script src='js/core/jQuery.js'></script>

<!-- PLUGINS -->
<script src='js/plugins/ImageFilter.js'></script>
<script src='js/core/social.js'></script>
    
<!-- OUR SCRIPTS -->
<script src='js/init.js'></script>
<script>
    window.plugins.social.available(function(avail) {
                                if (avail) {
                                // Show social widgets
                                } else {
                                // Social not supported
                                }
                                });
    </script>

    
    
  </head>
  <body onload="app.bodyLoad()">
<div id="header"><img src="images/header.png" width="100%"></div>
<div id="wrapper">
    <div id="content">
    
        <!-- BUTTONS -->
        <div id="buttons">
            <div class="btn" id="camera" onClick="app.useCamera();">use camera</div>
            <div class="btn" id="roll" onClick="app.useRoll();">use library</div>
            <div class="btn" id="share" onClick="window.plugins.social.share('', '', 'www/images/filters/stark.png');">Share</div>
        </div>
        <!-- END BUTTONS -->
        
        <!-- IMAGE AREA -->
        <div id="imageArea">
            <!-- OUR IMAGE -->
            <div class="photo"></div>
            <!-- FILTERS -->
            <div id="filters">
                <div class="filter" id="none" onClick="filters.none(largeImage);">
                    <div class="filterIcon"><img src="images/filters/none.png" height="100%"></div>
                    <div class="filterTitle">none</div>
                </div>
                <div class="filter" id="sunnySide" onClick="filters.sunnySide(largeImage);">
                    <div class="filterIcon"><img src="images/filters/sunnySide.png" height="100%"></div>
                    <div class="filterTitle">sunnySide</div>
                </div>
                <div class="filter" id="worn" onClick="filters.worn(largeImage);">
                    <div class="filterIcon"><img src="images/filters/worn.png" height="100%"></div>
                    <div class="filterTitle">worn</div>
                </div>
                <div class="filter" id="vintage" onClick="filters.vintage(largeImage);">
                    <div class="filterIcon"><img src="images/filters/vintage.png" height="100%"></div>
                    <div class="filterTitle">vintage</div>
                </div>
                <div class="filter" id="stark" onClick="filters.stark(largeImage);">
                    <div class="filterIcon"><img src="images/filters/stark.png" height="100%"></div>
                    <div class="filterTitle">stark</div>
                </div>
            </div>
        </div>
        <!-- END IMAGE AREA -->
        
        
        </div>
    </div>
  </body>
</html>

下面是js文件。

var largeImage;

var app = {
bodyLoad: function () {
    document.addEventListener("deviceready", app.deviceReady, false);
},
deviceReady: function () {
    app.init();
},
init: function () {
    
},
useCamera: function () {
    navigator.camera.getPicture(app.onCameraSuccess, app.onCameraFail, {
        quality: 100,
        destinationType: Camera.DestinationType.FILE_URI,
        sourceType: Camera.PictureSourceType.CAMERA,
        //allowEdit : true,
        encodingType: Camera.EncodingType.JPEG,
        targetWidth: 910,
        targetHeight: 910,
        saveToPhotoAlbum: false
    });
},
useRoll: function () {
    navigator.camera.getPicture(app.onCameraSuccess, app.onCameraFail, {
        quality: 100,
        destinationType: Camera.DestinationType.FILE_URI,
        sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
        encodingType: Camera.EncodingType.JPEG,
        targetWidth: 910,
        targetHeight: 910,
        saveToPhotoAlbum: false
    });
},
onCameraSuccess: function (imageURI) {
    
    largeImage = imageURI;
    $(".photo").html("<img src='" + imageURI + "'>");
    $(".photo").show();
    
},
onCameraFail: function (msg) {
    console.log("ERROR! -" + msg);
}
};

var filters = {
none: function (imageURI) {
    plugins.ImageFilter.none(filters.rendered, {
        image: imageURI,
        save: 'false',
    });
},
sunnySide: function (imageURI) {
    plugins.ImageFilter.sunnySide(filters.rendered, {
        image: imageURI,
        save: 'false'
    });
},
worn: function (imageURI) {
    plugins.ImageFilter.worn(filters.rendered, {
        image: imageURI,
        save: 'false'
    });
},
vintage: function (imageURI) {
    plugins.ImageFilter.vintage(filters.rendered, {
        image: imageURI,
        save: 'false'
    });
},
stark: function (imageURI) {
    plugins.ImageFilter.stark(filters.rendered, {
        image: imageURI,
        save: 'false'
    });
},
rendered: function (msg) {
    
    $(".photo").html("<img src='" + msg + "'>");
}
}

我正在纠结需要使用什么参数来替换“www/images/filters/stark.png”,以使(div class=“photo”)中加载的图像成为共享的图像。

2uluyalo

2uluyalo1#

老问题,我知道,但我刚刚发现问题是什么。这是一个错误(或未实现的功能)的社会共享插件。虽然它可以共享文件的路径像这样:/Users/blabla/../pic.jpg,它无法从文件协议共享图片:文件:///用户/blabla/../pic. jpg.
Phonegap的相机功能使用文件协议,因此失败。
好消息是:使用此插件,它是您正在使用的插件的扩展版本:https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin(兼容PhoneGap内部版本)。

avkwfej4

avkwfej42#

我认为如果将var.largeImage移到app命名空间中就可以解决这个问题。
<div class="btn" id="share" onClick="window.plugins.social.share('', '', 'www/images/filters/stark.png');">Share</div>转换为类似于
<div class="btn" id="share" onClick="window.plugins.social.share('', '', app.largeImage);">Share</div>
您可能需要在JavaScript文件中使用this.largeImage

相关问题