2013-05-09 4 views
0

소셜 공유 플러그인 (https://github.com/bfcam/phonegap-ios-social-plugin) 및 ImageFilter 플러그인 (https://github.com/DrewDahlman/ImageFilter)으로 작업하고 있습니다. 나는 두 가지 기능을 모두 갖추고있다. 내가하고 싶은 일은 내가 사진 라이브러리에서 선택한 사진을 가지고 있거나 미리 정의 된 이미지 대신 카메라와 함께 찍은 사진을 공유하는 것입니다.사회 공유 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 파일이 있습니다. 나는 내가 (DIV 클래스 = "사진")에로드 된 이미지가 될를 얻기 위해 'WWW/이미지/필터/stark.png'를 대체하기 위해 사용하는 데 필요한 매개 변수를 고민하고

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 + "'>"); 
} 
} 

공유되는 이미지. 어떤 도움이라도 대단히 감사하겠습니다. 감사.

+0

위의 항목 : http://stackoverflow.com/questions/16441296/social-share-plugin-cordova-phonegap/16442733#16442733? – MBillau

답변

0

var.largeImageapp 네임 스페이스 안에서 이동하면 해결할 수 있다고 생각합니다. 그런 다음

<div class="btn" id="share" onClick="window.plugins.social.share('', '', app.largeImage);">Share</div>

처럼 뭔가

<div class="btn" id="share" onClick="window.plugins.social.share('', '', 'www/images/filters/stark.png');">Share</div>을 변경할 수 있습니다 당신은 아마 당신의 자바 스크립트 파일에 this.largeImage을 사용해야합니다.

+0

아직 운이 없습니다. 여러 사람들에게 물어 보았지만 여전히 해결책을 찾지 못했습니다. 도움이 될지보고 싶은 파일을 이메일로 보내 주시면 기쁘게 생각합니다. 내 이메일 주소는 [email protected]입니다. 감사. –

+0

어쩌면 당신은 pastebin 또는 무언가에 파일을 게시 할 수 있습니다. 나는 보통 iOS 용으로 빌드하지는 않지만 자바 스크립트 문제 일뿐입니다. – MBillau

+0

당신이 app 네임 스페이스 안에서 var largeImage를 옮겨야한다고 말할 때. app 네임 스페이스에서 사용해야하는 largeImage의 절 (stanza)은 무엇입니까? 나는 성공하지 못한 채 여러 가지 일을 시도했다. 귀하의 제안에 감사드립니다. –

1

이전 문제는 알고 있지만 문제가 무엇인지 알았습니다. 그것은 사회적 공유 pluging의 버그 (또는 구현되지 않은 기능)입니다. /Users/blabla/../pic.jpg와 같은 경로로 파일을 공유 할 수 있지만 파일 프로토콜 (file : ///Users/blabla/../pic.jpg)에서 사진을 공유 할 수 없습니다.

Phonegap의 카메라 기능은 파일 프로토콜을 사용하므로 실패합니다.

이제 좋은 소식입니다.이 플러그인을 사용하면 확장 된 버전 인 https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin (PhoneGap Build compatible)을 사용할 수 있습니다.

관련 문제