TJXResult.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <template>
  2. <div style="margin: 1rem; padding: 0.5rem; width: 99%;height: 99%;">
  3. <!-- <img :src="imageData.data" style="height: auto; width: auto;" />"> -->
  4. <canvas id="mycan1" ref="mycan1" width="907" height="350" style="background-color: azure;display: ;"></canvas>
  5. <canvas id="mycan2" ref="mycan2" width="907" height="350"></canvas>
  6. <el-button type="primary" @click="download">下载</el-button>
  7. <!-- <img id="img" ref="img" style=" width: 100%;height: :100%;"/> -->
  8. </div>
  9. </template>
  10. <script>
  11. export default {
  12. props: ['imageData'],
  13. data() {
  14. return {
  15. }
  16. },
  17. mounted() {
  18. this.init()
  19. },
  20. methods: {
  21. init() {
  22. var that = this;
  23. var image = new Image();
  24. var minH = that.imageData.minH;
  25. image.src = this.imageData.data;
  26. // image.onload = function () {
  27. // var canvas1 = that.$refs["mycan1"]
  28. // var canvas2 = that.$refs["mycan2"]
  29. // var context = canvas2.getContext("2d")
  30. // canvas2.width = image.width;
  31. // canvas2.height = image.height;
  32. // var dW = image.width
  33. // var dh = image.height
  34. // var xRate = dW / that.imageData.width;
  35. // var yRate = dh / that.imageData.height;
  36. // var clipH = minH * yRate
  37. // var scale = that.imageData.height / (that.imageData.height - minH)
  38. // var drawScaleY = 350 / image.height;
  39. // yRate = canvas2.height / that.imageData.height;
  40. // scale = canvas2.height / (canvas2.height - clipH * drawScaleY)
  41. // context.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas2.width, canvas2.height);
  42. // // context.fillStyle = '#fff';
  43. // // context.fillRect(0, 0, canvas2.width, canvas2.height);
  44. // // 将canvas的透明背景设置成白色
  45. // var imageData = context.getImageData(0, 0, canvas2.width, canvas2.height);
  46. // // 遍历像素点,将彩色像素点转换为黑白像素点
  47. // for (var i = 0; i < imageData.data.length; i += 4) {
  48. // debugger
  49. // var r = imageData.data[i];
  50. // var g = imageData.data[i + 1];
  51. // var b = imageData.data[i + 2];
  52. // // var a = imageData.data[i + 3];
  53. // if (r == 0 && b == 0 && g == 0) {
  54. // imageData.data[i] = 132;
  55. // imageData.data[i + 1] = 180;
  56. // imageData.data[i + 2] = 237;
  57. // }
  58. // }
  59. // context.putImageData(imageData, 0, 0)
  60. // context.strokeStyle = "rgba(255,0,0,1)";
  61. // context.lineWidt = 25
  62. // context.strokeRect(0, 0, canvas2.width, canvas2.height)
  63. // yRate = canvas2.height / (that.imageData.height);
  64. // var dataX = parseInt(that.imageData.width / 50) * 10
  65. // for (var i = 0; i <= that.imageData.width; i += dataX) {
  66. // context.font = "20px serif";
  67. // context.strokeText(i, i * xRate, 20);
  68. // context.strokeText(i, i * xRate, canvas2.height);
  69. // }
  70. // var datay = parseInt(that.imageData.height / 50) * 10
  71. // for (var j = datay; j <= that.imageData.height; j += datay) {
  72. // context.font = "20px serif";
  73. // context.strokeText(j, 10, canvas2.height - j * yRate);
  74. // context.strokeText(j, canvas2.width - 50, canvas2.height - j * yRate);
  75. // }
  76. // //context.scale(1, scale)
  77. // }
  78. image.onload = function () {
  79. var canvas1 = that.$refs["mycan1"]
  80. var canvas2 = that.$refs["mycan2"]
  81. var ctx = canvas1.getContext("2d");
  82. // canvas1.height = image.height;
  83. // canvas1.width = image.width;
  84. var xRate = canvas1.width / that.imageData.width;
  85. var yRate = canvas1.height / that.imageData.height;
  86. var clipH = minH * yRate;
  87. // canvas1.height -= clipH;
  88. ctx.drawImage(image, 0, 0, image.width, image.height , 0, 0, canvas1.width, canvas1.height);
  89. // var canvasData = ctx.getImageData(0, 0, canvas1.width, canvas1.height); //读取图片数据
  90. // var lOffset = canvasData.width;
  91. // var rOffset = 0;
  92. // var tOffset = canvasData.height;
  93. // var bOffset = 0;
  94. // for (var i = 0; i < image.width; i++) {
  95. // for (var j = 0; j < image.height; j++) {
  96. // // var pos = (i + canvas1.width * j) * 4
  97. // var pos = (i + image.width * j) * 4
  98. // if (canvasData.data[pos] == 0|| canvasData.data[pos + 1] == 0 || canvasData.data[pos + 2] == 0 || canvasData.data[pos + 3] ==0) {
  99. // bOffset = Math.max(j, bOffset); // 找到有色彩的最下端
  100. // rOffset = Math.max(i, rOffset); // 找到有色彩的最右端
  101. // tOffset = Math.min(j, tOffset); // 找到有色彩的最上端
  102. // lOffset = Math.min(i, lOffset); // 找到有色彩的最左端
  103. // }
  104. // }
  105. // }
  106. // for(var j=0;j<image.height;j++)
  107. // {
  108. // for(var i=0;i<image.width;i++)
  109. // {
  110. // }
  111. // }
  112. // lOffset++;
  113. // rOffset++;
  114. // tOffset++;
  115. // bOffset++;
  116. // canvas2.width = rOffset - lOffset;
  117. // canvas2.height = bOffset - tOffset;
  118. // xRate = canvas2.width / that.imageData.width;
  119. // yRate = canvas2.height / that.imageData.height;
  120. // debugger
  121. // var context = canvas2.getContext("2d");
  122. // var drawScaleY = canvas2.height / canvas1.height;
  123. // // context.putImageData(canvasData, lOffset, tOffset, canvas1.width, canvas1.height, 0, 0, canvas2.width, canvas2.height);//绘制
  124. // context.putImageData(canvasData, lOffset, tOffset)
  125. // var canvasData2 = context.getImageData(0, 0, canvas2.width, canvas2.height);
  126. // // // 遍历像素点,将彩色像素点转换为黑白像素点
  127. // // for (var i = 0; i < canvasData2.data.length; i += 4) {
  128. // // var r = canvasData2.data[i];
  129. // // var g = canvasData2.data[i + 1];
  130. // // var b = canvasData2.data[i + 2];
  131. // // // var a = imageData.data[i + 3];
  132. // // if (r == 0 && b == 0 && g == 0) {
  133. // // canvasData2.data[i] = 132;
  134. // // canvasData2.data[i + 1] = 180;
  135. // // canvasData2.data[i + 2] = 237;
  136. // // }
  137. // // }
  138. // // context.putImageData(canvasData2, 0, 0)
  139. // context.strokeStyle = "rgba(255,0,0,1)";
  140. // var dataX = parseInt(that.imageData.width / 50) * 10;
  141. // for (var i = 0; i <= that.imageData.width; i += dataX) {
  142. // context.font = "20px serif";
  143. // context.strokeText(i, i * xRate, 20);
  144. // context.strokeText(i, i * xRate, canvas2.height);
  145. // }
  146. // var datay = parseInt(that.imageData.height / 50) * 10;
  147. // for (var j = datay; j <= that.imageData.height; j += datay) {
  148. // context.font = "20px serif";
  149. // context.strokeText(j, 10, canvas2.height - j * yRate);
  150. // context.strokeText(j, canvas2.width - 30, canvas2.height - j * yRate);
  151. // }
  152. // console.log(canvas2.toDataURL());//得到最终裁剪出来的base64
  153. }
  154. },
  155. download() {
  156. var canvas = this.$refs['mycan1']
  157. // var context = canvas.getContext("2d")
  158. var url = canvas.toDataURL("image/jpeg");
  159. var a = document.createElement('a');
  160. var event = new MouseEvent('click');
  161. a.download = (new Date()).getTime() + ".png"; // 指定下载图片的名称
  162. a.href = url;
  163. a.dispatchEvent(event); // 触发超链接的点击事件
  164. }
  165. }
  166. }
  167. </script>
  168. <style scoped>
  169. .vl-notify-content {
  170. background-color: white;
  171. }
  172. </style>) -->