._quaggajs">
当前位置:   article > 正文

使用quaggaJS识别图片中的条形码

quaggajs

使用quaggaJS识别图片中的条形码

quaggaJS是一个纯JS的插件,用于识别图片中的条形码,很方便。一般用于移动端拍照识别,也可以在网页端上传图片识别。

github下载地址

首先要指定正确格式的条形码,常见的条形码编码类型有EAN和CODE128。

另外,并不是所有图片中的条形码都可以被识别出来,而且正确率也不是100%。

下面是识别网页上传图片中条码的方法。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <section id="container" class="container">
  9. <div class="controls">
  10. <fieldset class="input-group">
  11. <input type="file" accept="image/*;capture=camera">
  12. <button id="btnIdents">识别</button>
  13. </fieldset>
  14. </div>
  15. <div id="interactive" class="viewport"><br clear="all"></div>
  16. </section>
  17. <script src="https://cdn.bootcss.com/jquery/2.0.3/jquery.js" type="text/javascript"></script>
  18. <script src="./js/quagga.js" type="text/javascript"></script>
  19. <link rel="stylesheet" type="text/css" href="./css/fileinput.css">
  20. <script src="./js/file_input.js" type="text/javascript"></script>
  21. <script type="text/javascript">
  22. $(function() {var App = {
  23. init: function() {
  24. App.attachListeners();
  25. },
  26. attachListeners: function() {
  27. var self = this;
  28. $("#btnIdents").on("click", function(e) {
  29. var input = document.querySelector(".controls input[type=file]");
  30. if (input.files && input.files.length) {
  31. App.decode(URL.createObjectURL(input.files[0]));
  32. }
  33. });
  34. },
  35. decode: function(src) {
  36. var self = this,
  37. config = $.extend({}, self.state, {src: src});
  38. Quagga.decodeSingle(config, function(result) {
  39. //识别结果
  40. if(result.codeResult){
  41. console.log(result.codeResult.code);
  42. alert("图片中的条形码为:" + result.codeResult.code);
  43. }else{
  44. alert("未识别到图片中的条形码!");
  45. }
  46. });
  47. },
  48. state: {
  49. inputStream: {
  50. size: 800,
  51. singleChannel: false
  52. },
  53. locator: {
  54. patchSize: "medium",
  55. halfSample: true
  56. },
  57. decoder: {
  58. readers: [{
  59. format: "code_128_reader",
  60. config: {}
  61. }]
  62. },
  63. locate: true,
  64. src: null
  65. }
  66. };
  67. App.init();
  68. });
  69. </script>
  70. </body>
  71. </html>

运行效果

补充:上面的代码主要是参考了官方的demo,后来又按自己的习惯写了一遍,也贴上来。运行效果是一样的。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <section id="container" class="container">
  9. <div class="controls">
  10. <fieldset class="input-group">
  11. <input type="file" accept="image/*;capture=camera">
  12. <button id="btnIdents">识别</button>
  13. </fieldset>
  14. </div>
  15. <div id="interactive" class="viewport"><br clear="all"></div>
  16. </section>
  17. <script src="https://cdn.bootcss.com/jquery/2.0.3/jquery.js" type="text/javascript"></script>
  18. <script src="./js/quagga.js" type="text/javascript"></script>
  19. <link rel="stylesheet" type="text/css" href="./css/fileinput.css">
  20. <script src="./js/file_input.js" type="text/javascript"></script>
  21. <script type="text/javascript">
  22. $(function() {
  23. $("#btnIdents").click(function() {
  24. var input = document.querySelector(".controls input[type=file]");
  25. if (input.files && input.files.length) {
  26. decode(URL.createObjectURL(input.files[0]));
  27. }
  28. });
  29. });
  30. function decode(src){
  31. var config = {
  32. inputStream: {
  33. size: 800,
  34. singleChannel: false
  35. },
  36. locator: {
  37. patchSize: "medium",
  38. halfSample: true
  39. },
  40. decoder: {
  41. readers: [{
  42. format: "code_128_reader",
  43. config: {}
  44. }]
  45. },
  46. locate: true,
  47. src: src
  48. }
  49. Quagga.decodeSingle(config, function(result) {
  50. if(!result){
  51. alert("图片中没有条形码!");
  52. return false;
  53. }
  54. //识别结果
  55. if(result.codeResult){
  56. console.log("图片中的条形码为:"+result.codeResult.code);
  57. alert("图片中的条形码为:" + result.codeResult.code);
  58. }else{
  59. alert("未识别到图片中的条形码!");
  60. }
  61. });
  62. }
  63. </script>
  64. </body>
  65. </html>

 另外,如果不是文件上传的话,可以传图片的url进行识别。

  1. function decode(img_url) {
  2. var config = {
  3. readers: ["code_128_reader"],
  4. locate: true,
  5. src : img_url
  6. }
  7. Quagga.decodeSingle(config, function (result) {
  8. console.log("decoding...");
  9. if (!result) {
  10. console.log("图片中没有条形码!");
  11. return false;
  12. }
  13. //识别结果
  14. if (result.codeResult) {
  15. console.log("图片中的条形码为:" + result.codeResult.code);
  16. } else {
  17. console.log("未识别到图片中的条形码!");
  18. }
  19. });
  20. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/111041
推荐阅读
相关标签
  

闽ICP备14008679号