使用 Phonegap/Cordova 相机插件从相机或图库中选择照片

Posted

技术标签:

【中文标题】使用 Phonegap/Cordova 相机插件从相机或图库中选择照片【英文标题】:Using the Phonegap/Cordova camera plugin select photo from camera OR gallery 【发布时间】:2013-11-23 15:40:38 【问题描述】:

我正在使用 Phonegap 3.0.0 相机插件 (https://build.phonegap.com/plugins/242)。我想让用户上传照片。 sourcetype 的当前选项是:

Camera.PictureSourceType.CAMERA

Camera.PictureSourceType.SAVEDPHOTOALBUM

Camera.PictureSourceType.PHOTOLIBRARY

是否有任何 sourcetype 可以同时向用户显示所有这三个选项?我希望用户能够选择画廊或相机。我认为这是您点击< input type="file"/> 时移动浏览器中的典型行为。

【问题讨论】:

【参考方案1】:

试试这个:

诀窍:

<input type="file" capture="camera" accept="image/*" id="takePictureField">

http://www.raymondcamden.com/2013/5/20/Capturing-camerapicture-data-without-PhoneGap

网站的完整示例:

<!DOCTYPE html>
<html>
    <head>
    <meta name="viewport" content="width=320; user-scalable=no" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>ColorThief Demo</title>

    <script type="text/javascript" charset="utf-8" src="jquery-2.0.0.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="quantize.js"></script>
    <script type="text/javascript" charset="utf-8" src="color-thief.js"></script>

    <style>
    #yourimage 
        width:100%; 
    

    #swatches 
        width: 100%;
        height: 50px;   
    

    .swatch 
        width:18%;
        height: 50px;
        border-style:solid;
        border-width:thin;  
        float: left;
        margin-right: 3px;  
    
    </style>
    </head>

    <body>

        <input type="file" capture="camera" accept="image/*" id="takePictureField">

        <img id="yourimage">

        <div id="swatches">
            <div id="swatch0" class="swatch"></div>
            <div id="swatch1" class="swatch"></div>
            <div id="swatch2" class="swatch"></div>
            <div id="swatch3" class="swatch"></div>
            <div id="swatch4" class="swatch"></div>
        </div>

    <script>
    var desiredWidth;

    $(document).ready(function() 
        console.log('onReady');
        $("#takePictureField").on("change",gotPic);
        $("#yourimage").load(getSwatches);
        desiredWidth = window.innerWidth;

        if(!("url" in window) && ("webkitURL" in window)) 
            window.URL = window.webkitURL;   
        

    );

    function getSwatches()
        var colorArr = createPalette($("#yourimage"), 5);
        for (var i = 0; i < Math.min(5, colorArr.length); i++) 
            $("#swatch"+i).css("background-color","rgb("+colorArr[i][0]+","+colorArr[i][1]+","+colorArr[i][2]+")");
            console.log($("#swatch"+i).css("background-color"));
        
       

    //Credit: https://www.youtube.com/watch?v=EPYnGFEcis4&feature=youtube_gdata_player
    function gotPic(event) 
        if(event.target.files.length == 1 && 
           event.target.files[0].type.indexOf("image/") == 0) 
            $("#yourimage").attr("src",URL.createObjectURL(event.target.files[0]));
        
    



    </script>    
    </body>

</html>

【讨论】:

以上是关于使用 Phonegap/Cordova 相机插件从相机或图库中选择照片的主要内容,如果未能解决你的问题,请参考以下文章

使用插件访问从 phonegap Cordova 中的外部 URL 加载 Webste

Phonegap/cordova 社交分享插件,重复推文问题

桌面/移动标准网页中的phonegap / cordova社交共享插件

使用外部 Java 插件在 PhoneGap/Cordova 中捕获音频/视频

使用 phonegap/cordova 文件插件的问题第 2 部分 - 同步性

PhoneGap Cordova Admob 插件不工作