2

我有一个创建的 Phonegap 项目,它按照教程http://mobile.tutsplus.com/tutorials/phonegap/phonegap-from-scratch-camera-exporting/使用相机捕获图片。现在我想将图像保存为 blob一个sqlite数据库。也一旦保存检索并显示图像。请建议。

4

1 回答 1

3

请按照以下步骤
1.使用手机间隙相机 API 将您的图片作为 base 64
2.现在将 Base 64 转换为 Blob 对象

function convertDataURIToBlob(dataURI, mimetype) {
    var BASE64_MARKER= ';base64,';
    var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
    var base64 = dataURI.substring(base64Index);  
    var raw = window.atob(base64);
    var rawLength = raw.length;
    var uInt8Array = new Uint8Array(rawLength);
    for (var i = 0; i < rawLength; ++i) {
        uInt8Array[i] = raw.charCodeAt(i);   
    }
    var bb = new BlobBuilder();
    bb.append(uInt8Array.buffer);
    return bb.getBlob(mimetype); 
}


您应该从数据 url 中提取它并将其与 getBlob() 一起使用,而不是传入 mimetype。

使用此插件
3.现在您可以使用 phonegap Storage API 将图像保存到 Sqlite,您所需的列数据类型是字符串。
4.使用 Phone gap Storage API 从 Sqlite 获取您的 blob 对象
5.现在使用 Java 脚本将此对象表示为 HTMl 标记。这里是 HTML 5 的示例 blob 对象

<!DOCTYPE html>    
<html>    
<head>    
    <meta charset="utf-8" />    
    <title>Blob</title>    
    <script type="text/javascript">    
        (function () {    
            window.URL = window.URL || window.webkitURL;    
            function contentLoaded() {    
                var blob = new Blob(['alert("hello")'], { type: 'text/javascript' });    
                var script = document.createElement('script');    
                script.setAttribute('src', window.URL.createObjectURL(blob));    
                document.body.appendChild(script);    
            }    
            window.addEventListener('DOMContentLoaded', contentLoaded, false);    
        } ());    
    </script>    
</head>    
<body>    
    <div id="container">    
    </div>    
</body>    
</html>
于 2013-04-12T13:54:48.997 回答