rx.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <html>
  2. <meta name="viewport" content="width=device-width, initial-scale=1">
  3. <head>
  4. <title>QuickSend RX</title>
  5. <link rel="stylesheet" href="tocas.css">
  6. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
  7. <script type="text/javascript" src="js/grid.js"></script>
  8. <script type="text/javascript" src="js/version.js"></script>
  9. <script type="text/javascript" src="js/detector.js"></script>
  10. <script type="text/javascript" src="js/formatinf.js"></script>
  11. <script type="text/javascript" src="js/errorlevel.js"></script>
  12. <script type="text/javascript" src="js/bitmat.js"></script>
  13. <script type="text/javascript" src="js/datablock.js"></script>
  14. <script type="text/javascript" src="js/bmparser.js"></script>
  15. <script type="text/javascript" src="js/datamask.js"></script>
  16. <script type="text/javascript" src="js/rsdecoder.js"></script>
  17. <script type="text/javascript" src="js/gf256poly.js"></script>
  18. <script type="text/javascript" src="js/gf256.js"></script>
  19. <script type="text/javascript" src="js/decoder.js"></script>
  20. <script type="text/javascript" src="js/qrcode.js"></script>
  21. <script type="text/javascript" src="js/findpat.js"></script>
  22. <script type="text/javascript" src="js/alignpat.js"></script>
  23. <script type="text/javascript" src="js/databr.js"></script>
  24. <script type="text/javascript">
  25. function qdecode(){
  26. var result = qrcode.decode();
  27. if (result.includes("imuslab.com")){
  28. window.location.replace(result);
  29. }else{
  30. alert(result);
  31. }
  32. }
  33. </script>
  34. </head>
  35. <body>
  36. <div class="ts inverted heading fluid slate" style="background-color:#2c2835;color:white;">
  37. <span class="large header">Quick Send System</span>
  38. <span class="description">Send data between mobile and laptops.<br> Powered by IMUS Laboratory</span>
  39. <div class="ts bottom attached tabbed menu" style="color:white;">
  40. <a class="item" href="index.php" style="color:#9d9ca3;">Send</a>
  41. <a class="active item" href="rx.php">Receive</a>
  42. <a class="item" href="img.php" style="color:#9d9ca3;">Image</a>
  43. <a class="item" href="file.php" style="color:#9d9ca3;">Files</a>
  44. </div>
  45. </div>
  46. <div class="ts container">
  47. <br><br>
  48. <div class="ts stackable grid">
  49. <div class="four wide column" align="center">
  50. <h4>QuickSend ID</h4>
  51. <div class="ts fluid input">
  52. <input type="text" id="mid" placeholder="Memo ID" style="width:100%;">
  53. </div>
  54. <button id="viewbtn"class="ts basic fluid button" onclick="manual_redirect();" >View</button>
  55. <div class="ts tiny statistic" onClick="cloneCode();">
  56. <div class="label">Latest QSCode Number</div>
  57. <div class="value" id="lcode"><?php
  58. $max = 0;
  59. foreach (new DirectoryIterator('Memo/') as $fileInfo) {
  60. if ($fileInfo->isDot()) continue;
  61. $current = pathinfo($fileInfo->getFilename())['filename'];
  62. if (!is_numeric($current)) continue;
  63. if ($current > $max) $max = $current;
  64. }
  65. echo $max;
  66. ?></div>
  67. </div>
  68. </div>
  69. <div class="twelve wide column">
  70. <h4>QR-Code ID</h4>
  71. <form>
  72. <div>
  73. <input class="ts button" type="file" accept="image/*" id="file-input" capture="camera">
  74. </div>
  75. </form>
  76. <canvas id="qr-canvas" width="256px" height="256px" style="display:none;"></canvas>
  77. <canvas id="preview-canvas" width="256px" height="256px"></canvas>
  78. <div class="ts container" align="right">
  79. <button class="ts basic button" onclick="qdecode()">Decode</button>
  80. </div>
  81. </div>
  82. </div>
  83. <br><br><br><br><br><br>
  84. <div style="position: fixed;
  85. z-index: 100;
  86. bottom: 0;
  87. left: 0;
  88. width: 100%;
  89. background-color:#2c2835;
  90. color:white;">
  91. <div class="ts container">
  92. <img class="ts tiny right floated image" src="img/cube.png"></img>
  93. </div>
  94. <div align="left" class="ts container">
  95. <br>
  96. CopyRight IMUS Laboratory 2018, All right reserved.
  97. </div>
  98. </div>
  99. </div>
  100. <script>
  101. $("#viewbtn").keyup(function(event) {
  102. if (event.keyCode == 13) {
  103. manual_redirect();
  104. }
  105. });
  106. function resizeCanvasImage(img, canvas, maxWidth, maxHeight) {
  107. var imgWidth = img.width,
  108. imgHeight = img.height;
  109. var ratio = 1, ratio1 = 1, ratio2 = 1;
  110. ratio1 = maxWidth / imgWidth;
  111. ratio2 = maxHeight / imgHeight;
  112. // Use the smallest ratio that the image best fit into the maxWidth x maxHeight box.
  113. if (ratio1 < ratio2) {
  114. ratio = ratio1;
  115. }
  116. else {
  117. ratio = ratio2;
  118. }
  119. var canvasContext = canvas.getContext("2d");
  120. var canvasCopy = document.createElement("canvas");
  121. var copyContext = canvasCopy.getContext("2d");
  122. var canvasCopy2 = document.createElement("canvas");
  123. var copyContext2 = canvasCopy2.getContext("2d");
  124. canvasCopy.width = imgWidth;
  125. canvasCopy.height = imgHeight;
  126. copyContext.drawImage(img, 0, 0);
  127. // init
  128. canvasCopy2.width = imgWidth;
  129. canvasCopy2.height = imgHeight;
  130. copyContext2.drawImage(canvasCopy, 0, 0, canvasCopy.width, canvasCopy.height, 0, 0, canvasCopy2.width, canvasCopy2.height);
  131. var rounds = 2;
  132. var roundRatio = ratio * rounds;
  133. for (var i = 1; i <= rounds; i++) {
  134. console.log("Step: "+i);
  135. // tmp
  136. canvasCopy.width = imgWidth * roundRatio / i;
  137. canvasCopy.height = imgHeight * roundRatio / i;
  138. copyContext.drawImage(canvasCopy2, 0, 0, canvasCopy2.width, canvasCopy2.height, 0, 0, canvasCopy.width, canvasCopy.height);
  139. // copy back
  140. canvasCopy2.width = imgWidth * roundRatio / i;
  141. canvasCopy2.height = imgHeight * roundRatio / i;
  142. copyContext2.drawImage(canvasCopy, 0, 0, canvasCopy.width, canvasCopy.height, 0, 0, canvasCopy2.width, canvasCopy2.height);
  143. } // end for
  144. // copy back to canvas
  145. canvas.width = imgWidth * roundRatio / rounds;
  146. canvas.height = imgHeight * roundRatio / rounds;
  147. canvasContext.drawImage(canvasCopy2, 0, 0, canvasCopy2.width, canvasCopy2.height, 0, 0, canvas.width, canvas.height);
  148. }
  149. $(function() {
  150. $('#file-input').change(function(e) {
  151. var file = e.target.files[0],
  152. imageType = /image.*/;
  153. if (!file.type.match(imageType))
  154. return;
  155. var reader = new FileReader();
  156. reader.onload = fileOnload;
  157. reader.readAsDataURL(file);
  158. });
  159. function fileOnload(e) {
  160. var $img = $('<img>', { src: e.target.result });
  161. $img.load(function() {
  162. var canvas = $('#qr-canvas')[0];
  163. var context = canvas.getContext('2d');
  164. canvas.width = this.naturalWidth;
  165. canvas.height = this.naturalHeight;
  166. context.drawImage(this, 0, 0);
  167. //grab the context from your destination canvas
  168. var pcanvas = $('#preview-canvas')[0];
  169. var destCtx = pcanvas.getContext('2d');
  170. //call its drawImage() function passing it the source canvas directly
  171. destCtx.drawImage(canvas, 0, 0, 256, 256 * this.height / this.width);
  172. });
  173. }
  174. });
  175. function manual_redirect(){
  176. var id = $("#mid").val();
  177. window.location.replace("http://imuslab.com/qs/display.php?id=" + id);
  178. }
  179. function cloneCode(){
  180. $("#mid").val($("#lcode").html());
  181. }
  182. </script>
  183. </body>
  184. </html>