问题
I am using the Social Share Plugin for Cordova (https://github.com/bfcam/phonegap-ios-social-plugin), and I have everything working. What I was wondering was if there is a way to have an image you have taken or from your library shared instead of a predefined image. I already have the functions set up to take a picture and select an image from my library. Thanks.
I am using this with an ImageFilter plugin here is the code for my index.html page
<!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>
Here is the js from the image filter plugin that allows me to select an image from my library or tak a picture with the camera
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 + "'>");
}
}
I am struggling with what parameter to use to replace 'www/image/local_image.jpg' in order for it to share the image that I have taken or selected from the library.
回答1:
The readme file for that plugin says you can share things like this:
window.plugins.social.share('This is the message you want to share', 'http://someurl.com', 'www/image/local_image.jpg');
You should therefore be able to share any image that you have, just replace 'www/image/local_image.jpg' with the path to the image you want to share. If you already have code to take a picture or select an image from your library, this should be trivial.
来源:https://stackoverflow.com/questions/16441296/social-share-plugin-cordova-phonegap