返回顶部
首页 > 资讯 > 精选 >怎么在HTML5中使用IndexDB存储图像
  • 303
分享到

怎么在HTML5中使用IndexDB存储图像

2023-06-09 21:06:52 303人浏览 八月长安
摘要

本篇文章为大家展示了怎么在HTML5中使用IndexDB存储图像,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、创建或打开数据库。// IndexedDBwindow.indexedDB

本篇文章为大家展示了怎么在HTML5中使用IndexDB存储图像,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1、创建或打开数据库。

// IndexedDBwindow.indexedDB = window.indexedDB || window.WEBkitIndexedDB || window.mozIndexedDB || window.OIndexedDB || window.msIndexedDB,    IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.OIDBTransaction || window.msIDBTransaction,    dbVersion = 1;// Create/open databasevar request = indexedDB.open("elephantFiles", dbVersion);request.onsuccess = function (event) {    console.log("Success creating/accessing IndexedDB database");    db = request.result;    db.onerror = function (event) {        console.log("Error creating/accessing IndexedDB database");    };        // Interim solution for Google Chrome to create an objectStore. Will be deprecated    if (db.setVersion) {        if (db.version != dbVersion) {            var setVersion = db.setVersion(dbVersion);            setVersion.onsuccess = function () {                createObjectStore(db);                getImageFile();            };        }        else {            getImageFile();        }    }    else {        getImageFile();    }}// For future use. Currently only in latest Firefox versionsrequest.onupgradeneeded = function (event) {    createObjectStore(event.target.result);};

使用它的预期方法是在创建数据库时触发onupgradeneeded事件或获取更高版本号。 目前仅在Firefox中支持此功能,但很快将在其他Web浏览器中支持。 如果Web浏览器不支持此事件,则可以使用已弃用的setVersion方法并连接到其onsuccess事件。

2、创建一个objectStore(如果它尚不存在)

// Create an objectStoreconsole.log("Creating objectStore")dataBase.createObjectStore("elephants");

在这里,您创建一个ObjectStore,您将存储数据 - 或者在我们的例子中,文件 - 并且一旦创建,您不需要重新创建它,只需更新其内容即可。

3、将图像文件检索为blob

// Create XHRvar xhr = new XMLHttpRequest(),    blob;xhr.open("GET", "elephant.png", true);// Set the responseType to blobxhr.responseType = "blob";xhr.addEventListener("load", function () {    if (xhr.status === 200) {        console.log("Image retrieved");                // File as response        blob = xhr.response;        // Put the received blob into IndexedDB        putElephantInDb(blob);    }}, false);// Send XHRxhr.send();

此代码直接将文件的内容作为blob获取。目前只支持Firefox。 收到整个文件后,将blob发送到函数以将其存储在数据库中。

4、初始化一个数据库事物

// Open a transaction to the databasevar transaction = db.transaction(["elephants"], IDBTransaction.READ_WRITE);

要开始向数据库写入内容,您需要使用objectStore名称和要执行的操作类型(在本例中为read和write)启动事务

5、保存图像blob到数据库中去

// Put the blob into the dabasetransaction.objectStore("elephants").put(blob, "image");

一旦事务到位,您将获得对所需objectStore的引用,然后将您的blob放入其中并为其提供密钥。

6、读出保存的文件并从中创建ObjectURL并将其设置为页面中图像元素的src

// Retrieve the file that was just storedtransaction.objectStore("elephants").get("image").onsuccess = function (event) {    var imgFile = event.target.result;    console.log("Got elephant!" + imgFile);    // Get window.URL object    var URL = window.URL || window.webkitURL;    // Create and revoke ObjectURL    var imgURL = URL.createObjectURL(imgFile);    // Set img src to ObjectURL    var imgElephant = document.getElementById("elephant");    imgElephant.setAttribute("src", imgURL);    // Revoking ObjectURL    URL.revokeObjectURL(imgURL);};

使用相同的事务来获取刚刚存储的图像文件,然后创建一个objectURL并将其设置为页面中图像的src。 例如,这也可以是一个附加到脚本元素的javascript文件,然后它将解析JavaScript。

最后完整代码

(function () {    // IndexedDB    var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.OIndexedDB || window.msIndexedDB,        IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.OIDBTransaction || window.msIDBTransaction,        dbVersion = 1.0;    // Create/open database    var request = indexedDB.open("elephantFiles", dbVersion),        db,        createObjectStore = function (dataBase) {            // Create an objectStore            console.log("Creating objectStore")            dataBase.createObjectStore("elephants");        },        getImageFile = function () {            // Create XHR            var xhr = new XMLHttpRequest(),                blob;            xhr.open("GET", "elephant.png", true);            // Set the responseType to blob            xhr.responseType = "blob";            xhr.addEventListener("load", function () {                if (xhr.status === 200) {                    console.log("Image retrieved");                                        // Blob as response                    blob = xhr.response;                    console.log("Blob:" + blob);                    // Put the received blob into IndexedDB                    putElephantInDb(blob);                }            }, false);            // Send XHR            xhr.send();        },        putElephantInDb = function (blob) {            console.log("Putting elephants in IndexedDB");            // Open a transaction to the database            var transaction = db.transaction(["elephants"], IDBTransaction.READ_WRITE);            // Put the blob into the dabase            var put = transaction.objectStore("elephants").put(blob, "image");            // Retrieve the file that was just stored            transaction.objectStore("elephants").get("image").onsuccess = function (event) {                var imgFile = event.target.result;                console.log("Got elephant!" + imgFile);                // Get window.URL object                var URL = window.URL || window.webkitURL;                // Create and revoke ObjectURL                var imgURL = URL.createObjectURL(imgFile);                // Set img src to ObjectURL                var imgElephant = document.getElementById("elephant");                imgElephant.setAttribute("src", imgURL);                // Revoking ObjectURL                URL.revokeObjectURL(imgURL);            };        };    request.onerror = function (event) {        console.log("Error creating/accessing IndexedDB database");    };    request.onsuccess = function (event) {        console.log("Success creating/accessing IndexedDB database");        db = request.result;        db.onerror = function (event) {            console.log("Error creating/accessing IndexedDB database");        };                // Interim solution for Google Chrome to create an objectStore. Will be deprecated        if (db.setVersion) {            if (db.version != dbVersion) {                var setVersion = db.setVersion(dbVersion);                setVersion.onsuccess = function () {                    createObjectStore(db);                    getImageFile();                };            }            else {                getImageFile();            }        }        else {            getImageFile();        }    }        // For future use. Currently only in latest Firefox versions    request.onupgradeneeded = function (event) {        createObjectStore(event.target.result);    };})();

上述内容就是怎么在html5中使用IndexDB存储图像,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么在HTML5中使用IndexDB存储图像

本文链接: https://lsjlt.com/news/257943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在HTML5中使用IndexDB存储图像
    本篇文章为大家展示了怎么在HTML5中使用IndexDB存储图像,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、创建或打开数据库。// IndexedDBwindow.indexedDB...
    99+
    2023-06-09
  • HTML5中怎么使用网络存储存储键值对的数据
    本篇内容介绍了“HTML5中怎么使用网络存储存储键值对的数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • Html5中本地存储IndexedDB怎么用
    这篇文章将为大家详细讲解有关Html5中本地存储IndexedDB怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。IndexedDB 是一种低级API,用于客户端存储...
    99+
    2024-04-02
  • HTML5中LocalStorage本地存储怎么用
    这篇文章给大家分享的是有关HTML5中LocalStorage本地存储怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.前言HTML5 storage提供了一种方式让网站能...
    99+
    2024-04-02
  • html5中web本地存储怎么用
    这篇文章主要介绍了html5中web本地存储怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 在html5...
    99+
    2024-04-02
  • HTML5本地存储技术怎么使用
    本篇内容主要讲解“HTML5本地存储技术怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5本地存储技术怎么使用”吧! 本地缓存是HTML5出现的...
    99+
    2024-04-02
  • 怎么用HTML5 Canvas做在线图像处理
    本文小编为大家详细介绍“怎么用HTML5 Canvas做在线图像处理”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用HTML5 Canvas做在线图像处理”文章能帮助大家解决疑惑,下面跟着小编的思路慢...
    99+
    2024-04-02
  • 如何在HTML5 中使用canvas进行图像处理
    本篇文章为大家展示了如何在HTML5 中使用canvas进行图像处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。卷积什么是卷积?就跳过一些用专业属于描述专业术语看完懵逼的解释了,语文成绩很差的我尝...
    99+
    2023-06-09
  • 如何在html5中使用localStorage实现本地存储
    本篇文章给大家分享的是有关如何在html5中使用localStorage实现本地存储,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。localStorage.name="...
    99+
    2023-06-09
  • HTML5中本地存储功能怎么用
    这篇文章主要介绍了HTML5中本地存储功能怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们来实现一个简单应用,该应用中用户输入用户名...
    99+
    2024-04-02
  • HTML5本地存储中Web Storage怎么用
    这篇文章给大家分享的是有关HTML5本地存储中Web Storage怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Web Storage是H...
    99+
    2024-04-02
  • HTML5本地存储中Database Storage怎么用
    小编给大家分享一下HTML5本地存储中Database Storage怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!除了s...
    99+
    2024-04-02
  • 怎么在html5中调用摄像头
    本篇文章给大家分享的是有关怎么在html5中调用摄像头,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。调用摄像头第一种方法navigator.getUserMedia用法详见md...
    99+
    2023-06-09
  • HTML5使用SVG图像时viewBox属性怎么用
    小编给大家分享一下HTML5使用SVG图像时viewBox属性怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!viewBox...
    99+
    2024-04-02
  • 怎么在html5中使用offlline进行缓存
    本篇文章为大家展示了怎么在html5中使用offlline进行缓存,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。拿tomcat为例,在打开Tomcat 6.0\conf\web.xml文件,在文件的...
    99+
    2023-06-09
  • 怎么在html5中使用canvas压缩图片
    这期内容当中小编将会给大家带来有关怎么在html5中使用canvas压缩图片,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。知识点:canvas 的 toDataURL('image/png'...
    99+
    2023-06-09
  • html5中如何使用LocalStorage本地存储
    本篇文章为大家展示了html5中如何使用LocalStorage本地存储,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 一、本地存储  ...
    99+
    2024-04-02
  • OpenCV中怎么使用图像像素
    这篇文章主要介绍了OpenCV中怎么使用图像像素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇OpenCV中怎么使用图像像素文章都会有所收获,下面我们一起来看看吧。像素是计算机视觉中图像的重要属性。它们是表示图...
    99+
    2023-06-29
  • 怎么在python中使用__dict__存储属性
    怎么在python中使用__dict__存储属性?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C#...
    99+
    2023-06-14
  • 怎么在html5中使用canvas实现柱状图
    这篇文章给大家介绍怎么在html5中使用canvas实现柱状图,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用方式首先我们看一下使用方式,参考了部分ECharts的使用方式,先传入要显示图表的html标签,接着调用i...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作