• uniapp 解析富文本的html字符串 替换网络图片为base64图片


    思路

    1. 通过正则表达式 捕获到所有的网络图片地址
    2. 将网络图片转换成base64
    3. 形成一个有网络图片和base64图片的对象数组
    4. 循环这个对象数组使用replace  将 网络图片替换成 base64图片

    捕获到所有的src的属性网络图片

    1. matchImgSrcAll() {
    2. let str =
    3. "

      运行以下程序

      \n

      \n

      y和z的最终结果为:

      "
    4. let reg = /]*src=['"]([^'"]+)[^>]*>/gi
    5. let imgUrlList = []
    6. while (reg.lastIndex < str.length){
    7. imgUrlList.push(reg.exec(str)[1])
    8. }
    9. console.log("99999999999999",imgUrlList)
    10. return imgUrlList
    11. },

    使用正则表达式 

    let reg = /]*src=['"]([^'"]+)[^>]*>/gi

    使用正则表达式 match 匹配时,有一个lastIndex属性,每次匹配之后,都会向后移动,直到匹配结束 lastIndex的值 等于字符串的长度 结束while循环

    将网络图片转换成base64图片

    1. getImageInfoByPath(path) {
    2. let info = {}
    3. return new Promise((resolve, reject) => {
    4. uni.getImageInfo({
    5. src: path,
    6. success: image => {
    7. console.log("image0000", image)
    8. pathToBase64(image.path).then(base64 => {
    9. info.path = path
    10. info.base64 = base64
    11. console.log("base648888888888888888", info)
    12. resolve(info)
    13. })
    14. },
    15. fail: (err) => {
    16. reject(err)
    17. console.log("err000000000000000", err)
    18. }
    19. })
    20. })
    21. }

    由于将网络图片转换成base64图片是异步操作,所以使用了promise

    使用 uni.getImageInfo读取到图片的信息,并使用 image-tools 的 pathToBase64方法将图片转换成base64的格式

    使用promise.all实现网络图片替换为base64图片

    1. getUrlMapList(){
    2. let str =
    3. "

      运行以下程序

      \n

      \n

      y和z的最终结果为:

      "
    4. let pList = []
    5. let imgUrlList = this.matchImgSrcAll(str)
    6. imgUrlList.forEach(ele=>{
    7. pList.push(this.getImageInfoByPath(ele))
    8. })
    9. Promise.all(pList).then(res => {
    10. console.log("promise", res)
    11. res.forEach(ele => {
    12. str = str.replace(ele.path, ele.base64)
    13. })
    14. console.log('resultstr', str)
    15. })
    16. },

    定义一个数组,用户盛放所有的把网络图片转化为base64的promise函数

    使用promise.all实现异步请求的批量处理,将html中的网络图片批量替换为 base64的格式

  • 相关阅读:
    vivo z1换电池笔记
    SuperMap GIS基础产品FAQ集锦(20240617)
    图纸管理制度《四》
    云堡垒机和软件堡垒机哪个好?区别是什么?
    Spring Boot 项目中使用 JSP
    三数之和[中等]
    SSMS中的SQL sever代理
    AMD锐龙R5600G&VEGA7 GPU环境搭建
    OpenRoads导出FBX体积为0kb问题解决
    图片 视频和Canvas的相互转换
  • 原文地址:https://blog.csdn.net/qq_42389674/article/details/126549593