edit_reference.html 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>Make refernce</title>
  6. </head>
  7. <body>
  8. <h3>Create Reference out of Raw Image</h3>
  9. <div style="padding-left: 30px">
  10. <table>
  11. <tr>
  12. <td>
  13. <input type="button" value="Show acutual Reference" onclick="showReference()">
  14. </td>
  15. <td>
  16. <input type="button" value="Create new Reference" onclick="loadRawImage()">
  17. </td>
  18. </tr>
  19. <tr>
  20. <td>
  21. <table>
  22. <tr>
  23. <td>
  24. Pre-rotate Angle
  25. </td>
  26. <td>
  27. <input type="number" id="prerotateangle" name="prerotateangle" value=0 min="-360" max="360" onchange="drawRotated()">°
  28. </td>
  29. </tr>
  30. <tr>
  31. <td>
  32. Fine Alignment
  33. </td>
  34. <td>
  35. <input type="number" id="finerotate" name="finerotate" value=0.0 min="-1" max="1" step="0.2" onchange="drawRotated()">°
  36. </td>
  37. </tr>
  38. </table>
  39. </td>
  40. </tr>
  41. </table>
  42. <table>
  43. <tr>
  44. <td>
  45. <canvas id="canvas"></canvas>
  46. </td>
  47. </tr>
  48. <tr>
  49. <td>
  50. <input type="button" value="Update Reference Image" onclick="SaveReference()">
  51. </td>
  52. </tr>
  53. </table>
  54. </div>
  55. <script type="text/javascript" src="./gethost.js"></script>
  56. <script type="text/javascript" src="./readconfig.js"></script>
  57. <script language="JavaScript">
  58. var canvas = document.getElementById('canvas'),
  59. ctx = canvas.getContext('2d'),
  60. imageObj = new Image()
  61. basepath = "http://192.168.178.26";
  62. function loadRawImage(){
  63. url = basepath + "/fileserver/img_tmp/raw.jpg";
  64. document.getElementById("finerotate").value = 0;
  65. document.getElementById("prerotateangle").value = getPreRotate();
  66. document.getElementById("finerotate").disabled = false;
  67. document.getElementById("prerotateangle").disabled = false;
  68. // document.getElementById("ButtonRotate").disabled = false;
  69. drawRotated();
  70. }
  71. function showReference(){
  72. url = basepath + "/fileserver/config/reference.jpg";
  73. document.getElementById("finerotate").value = 0;
  74. document.getElementById("prerotateangle").value = 0;
  75. document.getElementById("finerotate").disabled = true;
  76. document.getElementById("prerotateangle").disabled = true;
  77. // document.getElementById("ButtonRotate").disabled = true;
  78. loadCanvas(url);
  79. ParseConfig();
  80. drawRotated();
  81. }
  82. function dataURLtoBlob(dataurl) {
  83. var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
  84. bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
  85. while(n--){
  86. u8arr[n] = bstr.charCodeAt(n);
  87. }
  88. return new Blob([u8arr], {type:mime});
  89. }
  90. function SaveReference(){
  91. if (confirm("Are you sure you want to update the reference image?")) {
  92. setPreRotate(document.getElementById("prerotateangle").value);
  93. UpdateConfigFile(basepath);
  94. var canvas = document.getElementById("canvas");
  95. var okay = SaveCanvasToImage(canvas, "/config/reference.jpg", true, basepath);
  96. if (okay) {
  97. alert("Update \"reference.jpg\" successfull!")
  98. }
  99. else {
  100. alert("Error on update \"reference.jpg\"!")
  101. }
  102. }
  103. }
  104. function loadCanvas(dataURL) {
  105. var canvas = document.getElementById('canvas');
  106. var context = canvas.getContext('2d');
  107. imageObj.onload = function() {
  108. canvas.width = this.width;
  109. canvas.height = this.height;
  110. drawRotated();
  111. };
  112. imageObj.src = dataURL;
  113. }
  114. function getCoords(elem) { // crossbrowser version
  115. var box = elem.getBoundingClientRect();
  116. var body = document.body;
  117. var docEl = document.documentElement;
  118. var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;
  119. var scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;
  120. var clientTop = docEl.clientTop || body.clientTop || 0;
  121. var clientLeft = docEl.clientLeft || body.clientLeft || 0;
  122. var top = box.top + scrollTop - clientTop;
  123. var left = box.left + scrollLeft - clientLeft;
  124. return { top: Math.round(top), left: Math.round(left) };
  125. }
  126. function init() {
  127. canvas.addEventListener('mousemove', mouseMove, false);
  128. basepath = getbasepath();
  129. loadConfig(basepath);
  130. showReference();
  131. }
  132. function drawRotated(){
  133. finerot= parseFloat(document.getElementById("finerotate").value);
  134. prerot = parseFloat(document.getElementById("prerotateangle").value);
  135. if (finerot == 1) {
  136. prerot+=1
  137. finerot = 0
  138. }
  139. if (finerot == -1) {
  140. prerot-=1
  141. finerot = 0
  142. }
  143. degrees = finerot + prerot;
  144. document.getElementById("finerotate").value = finerot;
  145. document.getElementById("prerotateangle").value = prerot;
  146. var canvas = document.getElementById('canvas');
  147. var context = canvas.getContext('2d');
  148. context.clearRect(0,0,imageObj.width,imageObj.height);
  149. context.save();
  150. context.translate(imageObj.width/2,imageObj.height/2);
  151. context.rotate(degrees*Math.PI/180);
  152. context.drawImage(imageObj,-imageObj.width/2,-imageObj.height/2);
  153. context.restore();
  154. drawGrid();
  155. }
  156. function drawGrid(){
  157. var canvas = document.getElementById('canvas');
  158. var ctx = canvas.getContext('2d');
  159. w = canvas.width;
  160. h = canvas.height;
  161. ctx.save();
  162. ctx.strokeStyle = '#00FF00';
  163. for (i = h/2; i < h; i += 100)
  164. {
  165. ctx.moveTo(0, i);
  166. ctx.lineTo(w, i);
  167. ctx.stroke();
  168. ctx.moveTo(0, h-i);
  169. ctx.lineTo(w, h-i);
  170. ctx.stroke();
  171. }
  172. for (i = w/2; i < w; i += 100)
  173. {
  174. ctx.moveTo(i, 0);
  175. ctx.lineTo(i, h);
  176. ctx.stroke();
  177. ctx.moveTo(w-i, 0);
  178. ctx.lineTo(w-i, h);
  179. ctx.stroke(); }
  180. ctx.restore();
  181. }
  182. function mouseMove(e) {
  183. drawRotated();
  184. var canvas = document.getElementById('canvas');
  185. var context = canvas.getContext('2d');
  186. zw = getCoords(this);
  187. x = e.pageX - zw.left;
  188. y = e.pageY - zw.top;
  189. context.lineWidth = 2;
  190. context.strokeStyle = "#00FF00";
  191. context.beginPath();
  192. context.moveTo(0,y);
  193. context.lineTo(canvas.width, y);
  194. context.moveTo(x, 0);
  195. context.lineTo(x, canvas.height);
  196. context.stroke();
  197. }
  198. init();
  199. </script>
  200. </body>
  201. </html>