combine.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <view>
  3. <canvas canvasId="myCanvas" class="myCanvas" style="height: 300px; width: 100%"></canvas>
  4. <button @tap="savePic" class="cbtn">保存至相册</button>
  5. </view>
  6. </template>
  7. <script>
  8. var app = getApp();
  9. export default {
  10. data() {
  11. return {};
  12. },
  13. onLoad: function (t) {
  14. var that = this;
  15. uni.getImageInfo({
  16. src: app.globalData.bgPic,
  17. success: function (a) {
  18. that.bgPic = a.path;
  19. that.draw();
  20. }
  21. });
  22. },
  23. onReady: function () {},
  24. methods: {
  25. draw: function () {
  26. var t = app.globalData.scale;
  27. var e = app.globalData.rotate;
  28. var n = app.globalData.hat_center_x;
  29. var c = app.globalData.hat_center_y;
  30. var hatSrc = app.globalData.currentHatSrc;
  31. var s = uni.createCanvasContext('myCanvas');
  32. var i = uni.getSystemInfoSync().windowWidth;
  33. var g = 100 * t;
  34. s.clearRect(0, 0, i, 300);
  35. s.drawImage(this.bgPic, i / 2 - 150, 0, 300, 300);
  36. s.translate(n, c);
  37. s.rotate((e * Math.PI) / 180);
  38. s.drawImage(hatSrc, -g / 2, -g / 2, g, g);
  39. s.draw();
  40. },
  41. savePic: function () {
  42. var a = uni.getSystemInfoSync().windowWidth;
  43. uni.canvasToTempFilePath({
  44. x: a / 2 - 150,
  45. y: 0,
  46. height: 300,
  47. width: 300,
  48. canvasId: 'myCanvas',
  49. success: function (a) {
  50. uni.saveImageToPhotosAlbum({
  51. filePath: a.tempFilePath,
  52. success: function (a) {
  53. uni.navigateBack({
  54. delta: 2
  55. });
  56. },
  57. fail: function (a) {}
  58. });
  59. }
  60. });
  61. }
  62. }
  63. };
  64. </script>
  65. <style>
  66. @import './combine.css';
  67. </style>