2013-05-09 62 views
0

我正在使用Social Share Plugin(https://github.com/bfcam/phonegap-ios-social-plugin)和ImageFilter Plugin(https://github.com/DrewDahlman/ImageFilter)。我已经建立和运作。我想要做的是从我的照片库中选择一张照片,或者使用相机拍摄的照片是共享的图像,而不是预定义的图像。Social Share Cordova 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 /图像/过滤器/ stark.png”来获取在(DIV CLASS =“照片”)加载的图像是挣扎共享的图像。任何帮助将不胜感激。谢谢。

+0

Dupe of:http://stackoverflow.com/questions/16441296/social-share-plugin-cordova-phonegap/16442733#16442733? – MBillau 2013-05-13 15:40:10

回答

0

我想你可以通过在app命名空间中移动var.largeImage来解决这个问题。然后你可以改变

<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

+0

仍然没有运气。我问过一堆不同的人,但仍然没有找到解决办法。我很乐意通过电子邮件通知您这些文件是否有用。我的电子邮件地址是[email protected]。谢谢。 – 2013-05-14 14:57:29

+0

也许你可以将文件发布到pastebin或其他东西上,我可以看看它们,尽管我通常不会为iOS构建,但这似乎只是一个JavaScript问题。 – MBillau 2013-05-14 15:03:04

+0

当你说我需要在应用程序命名空间中移动var largeImage时。我需要在应用程序名称空间中使用largeImage的节是什么?我尝试了几件不成功的事情。感谢您的建议。 – 2013-05-14 16:22:00

1

老问题,我知道,但我只是想出了问题所在。这是社交分享插件的错误(或未实现的功能)。虽然它可以用这样的路径共享文件:/Users/blabla/../pic.jpg,但它不能从文件协议分享照片:file:///Users/blabla/../pic.jpg。

Phonegap的摄像头功能使用文件协议,因此失败。

现在好消息是:使用此插件,它是您正在使用的扩展版本:https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin(PhoneGap Build兼容)。

相关问题