Browse Source

feature:修改壁纸列表的选择方法

zeng.chen 6 months ago
parent
commit
0ccffb448d

+ 1 - 1
devices/bluetooth/bt_cmd.js

@@ -254,7 +254,7 @@ class BtCmd {
     }
 
     // wifi ,md5都用这个
-    static sendWiFiInfo(wifiName, pwd) {
+    static sendWiFiInfo(wifiName, pwd, changePwd) {
         // [0x22, (wifiList.length + pwdList.length + 6), 0x33, (wifiList.length), (wifiList), 0x44, (pwdList)];
 
         if (!wifiName || !pwd) {

+ 87 - 6
pages/piano/cropper/cropper.js

@@ -28,6 +28,9 @@ Page({
     _imgMD5: null,
     _imgIndex: null,
     _imgNext: 0,
+    max_scale: 2,
+    _hasPermission: false,
+    wallpaper: {},
   },
   cropper: null,
   callback() {
@@ -71,13 +74,69 @@ Page({
         that.setData({
           src: tempFilePaths
         });
+
+        // todo 测试用
         // that.testUpload(tempFilePaths)
       }, fail(res) {
         console.log(res)
       }
     })
   },
+  testUpload(url) {
+    let _this = this
+
+    // 读取裁剪的jpg图片
+    const fs = wx.getFileSystemManager();
+    fs.readFile({
+      filePath: url,
+      encoding: '', // 不指定编码以获取原始二进制数据
+      success: (obj) => {
+        console.log("加载文件成功:", obj.data.byteLength, obj.data.length)
+
+        fs.getFileInfo({
+          "filePath": url, "digestAlgorithm": "md5", success: (res) => {
+            console.log("md5:", res)
+            console.log("加载文件成功:", obj.data.byteLength, obj.data.length, obj.getFileInfo)
+
+            let binData = obj.data;
+            // let myMd5 = _this.getImgMd5(binData)
+            // let my2Md5 = _this.getImg2Md5(binData)
+            // let my3Md5 = _this.getImg3Md5(binData)
+            wx.setClipboardData({
+              data: myMd5,
+              fail: (err) => {
+                console.error('setClipboardData失败:', err);
+              },
+              success: (res) => {
+                console.log('setClipboardData成功:', res);
+              },
+            })
+            _this.sliceDataIntoChunks(binData, 64);
+
+            console.log("加载文件成功2:", binData.byteLength, binData.length)
+            _this.data._imageBufferLength = binData.byteLength ?? binData.length
+            wx.hideLoading();
+            wx.showLoading({
+              title: '开始传输壁纸',
+            })
+            _this.data._imgMD5 = res.digest
+            _this.data._imgIndex = 0
+            console.log("md5 2:", res.digest)
+            _this.startImage()
+          }, fail: (err) => {
+            console.error('getFileInfo失败:', err);
+          },
+        })
+
+      },
+      fail: (err) => {
+        console.error('读取 .bin 文件失败:', err);
+      },
+    });
+    // 651kb的
+    // _this.downloadAndSaveFile("https://music-play.oss-cn-shenzhen.aliyuncs.com/backOss/file/8770a6097d9940b59032d099b2fdde3b.bin");
 
+  },
   loadimage(e) {
     wx.hideLoading();
     console.log('壁纸', e);
@@ -98,6 +157,9 @@ Page({
   },
   submit() {
     let _this = this
+    if (_this.data._chunks.length > 0) {
+      return;
+    }
 
     // 读取裁剪的jpg图片
     const fs = wx.getFileSystemManager();
@@ -120,11 +182,13 @@ Page({
               console.log("加载文件成功:", obj.data.byteLength, obj.data.length, obj.getFileInfo)
 
               let binData = obj.data;
-              let myMd5 = _this.getImgMde5(binData)
+              // let myMd5 = _this.getImgMd5(binData)
+              // let my2Md5 = _this.getImg2Md5(binData)
+              // let my3Md5 = _this.getImg3Md5(binData)
               wx.setClipboardData({
                 data: myMd5,
               })
-              _this.sliceDataIntoChunks(binData, 128);
+              _this.sliceDataIntoChunks(binData, 64);
 
               console.log("加载文件成功2:", binData.byteLength, binData.length)
               _this.data._imageBufferLength = binData.byteLength ?? binData.length
@@ -231,12 +295,12 @@ Page({
     // }
     this.data._chunks = chunks;
   },
-  getImgMde5(buffer) {
+  getImgMd5(buffer) {
     let md5ctx = js_md5.md5_init();
     js_md5.md5_update(md5ctx, buffer, buffer.byteLength ?? buffer.length);
     let result = js_md5.md5_final(md5ctx);
     let md5 = js_md5.md5_encode_hex(result, 16);
-    console.log("result:", md5);
+    console.log("result:", md5, result);
     return md5
   },
   sendImageMD5() {
@@ -348,17 +412,34 @@ Page({
       showCropImg: false
     });
   },
+  hasImage(image) {
+    let that = this;
+    that.cropper.imgReset();
+    // 有图片的进制缩放
+    that.setData({
+      src: image.pic,
+      max_scale: 1,
+    });
+  },
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad(options) {
-    this.checkAndRequestImagePermission()
+
     this.cropper = this.selectComponent("#image-cropper");
     this.cropper.imgReset();
+    let image = options.param ?? {}
+    if (image.pic) {
+      let json = JSON.parse(image)
+      this.hasImage(json)
+    } else {
+      console.log("没有图片")
+      this.checkAndRequestImagePermission()
+      this.upload(); //上传壁纸
+    }
     // this.setData({
     //   scr:json,
     // })
-    this.upload(); //上传壁纸
 
     let _this = this;
     EventManager.addNotification(CmdEvent.eventName, function (event) {

+ 1 - 1
pages/piano/cropper/cropper.wxml

@@ -1,7 +1,7 @@
 <!-- pages/piano/cropper/cropper.wxml -->
 <nav-bar class="navi_bar" bind:goBack="_goBack" nav-bgc-class="ex-nav-bgc-class" navbar-data='{{navbarData}}' callback="true" bind:callback="callback"></nav-bar>
 <view class="container">
-    <image-cropper id="image-cropper" bindload="cropperload" bindimageload="loadimage" bindtapcut="clickcut" limit_move="true" disable_rotate="true" width="{{width}}" height="{{height}}" imgSrc="{{src}}" disable_width="true" max_width="{{width}}" max_height="{{height}}" disable_height="true" disable_ratio="true" min_width="{{width}}" min_height="{{height}}" export_scale="1.5"></image-cropper>
+    <image-cropper id="image-cropper" bindload="cropperload" bindimageload="loadimage" bindtapcut="clickcut" limit_move="true" disable_rotate="true" width="{{width}}" height="{{height}}" imgSrc="{{src}}" disable_width="true" max_width="{{width}}" max_height="{{height}}" disable_height="true" disable_ratio="true" min_width="{{width}}" min_height="{{height}}" max_scale="{{max_scale}}" export_scale="1.5"></image-cropper>
     <view wx:if="{{showProgress}}" class="progress-container">
         <progress class="progress" border-radius="26rpx" percent="{{progress}}" activeColor="rgba(101, 70, 163, 1)" backgroundColor="rgba(0, 0, 0, 0.40)" stroke-width="26" border-radius="13" />
         <view class="progress-text">保存壁纸中…{{progress}}%</view>

+ 36 - 16
pages/piano/wallpaper/wallpaper.js

@@ -8,8 +8,19 @@ import route_util from '../../../utils/route_util';
 // import EventManager from '../../utils/event_bus'
 
 
-Page({
+// applicationType: "[0]"
+// createTime: "2025-01-10T09:36:04.000+00:00"
+// createTimeStr: null
+// id: "1877650605435129856"
+// name: null
+// note: ""
+// pic: "https://music-play.oss-cn-shenzhen.aliyuncs.com/device/20250110173600839933880.png"
+// sort: 1
+// status: 0
+// updateTime: "2025-01-10T09:36:04.000+00:00"
+
 
+Page({
   /**
    * 页面的初始数据
    */
@@ -18,10 +29,8 @@ Page({
     {
       //      pic: "",
       //      id: "",
-      //      name: ""
     },
     imageList: [
-
     ],
     selectIndex: 0,
     navbarData: {
@@ -35,33 +44,44 @@ Page({
 
   },
   footerTap() {
-    route_util.jump("../cropper/cropper")
+    route_util.jumpParam("../cropper/cropper", JSON.stringify(this.data.topImg ?? {}))
+  },
+  imageTopTap() {
+    this.setData({
+      topImg: {}
+    })
   },
-
   imageTap(e) {
-    // console.log(e)
+    console.log(e)
     // wxfile://tmp_d3e57489ead39c698676ff860df9cb8a37f66ee1a4777dbb.jpg
     let image = e.currentTarget.dataset.image;
-    _this.setData({
-      topImg: image ?? {}
-    })
+    let _this = this;
+    if (image.id == this.data.topImg.id) {
+      _this.setData({
+        topImg: {}
+      })
+    } else {
+      _this.setData({
+        topImg: image ?? {}
+      })
+    }
+
   }, wallpaperList() {
     let _this = this;
     deviceWallPaper().then(res => {
       console.log("壁纸列表", res);
-      let data = res.data ?? []
+      let data = res ?? []
       if (data.length == 0) {
-        _this.setData({
-          imageList: [],
-          topImg: {},
-        })
+        // _this.setData({
+        //   imageList: [],
+        //   topImg: {},
+        // })
         return;
       }
-      topImg = data[0];
 
       _this.setData({
         imageList: data ?? [],
-        topImg: data[0] ?? {}
+        // topImg: data[0] ?? {}
       })
 
     })

+ 2 - 2
pages/piano/wallpaper/wallpaper.wxml

@@ -1,14 +1,14 @@
 <!-- pages/piano/wallpaper/wallpaper.wxml -->
 <view class="container">
     <nav-bar bind:goBack="_goBack" nav-bgc-class="ex-nav-bgc-class" nav-title-class="ex-nav-title-class" ex-back-pre="ex-back-pre" navbar-data='{{navbarData}}'></nav-bar>
-    <view wx:if="{{topImg.pic}}" class="img_section">
+    <view wx:if="{{topImg.pic}}" class="img_section" bind:tap="imageTopTap">
         <image src="{{topImg.pic}}" class="select_img"></image>
         <!-- <canvas wx:if="{{showCropImg}}" class="canvas_img" canvas-id="imageCanvas"></canvas> -->
         <image src="../../../images/common/icon_sel.png" class="select_icon"></image>
     </view>
     <view class="grid-container">
         <block wx:for="{{imageList}}" wx:key="index" wx:for-item="item" wx:for-index="index">
-            <image class="device_img" src="{{item.pic}}" mode="aspectFill" bind:tap="deviceTap" data-image="{{item}}" />
+            <image class="device_img" src="{{item.pic}}" mode="aspectFill" bind:tap="imageTap" data-image="{{item}}" />
         </block>
     </view>
     <view class="footer" bind:tap="footerTap">