前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【python 实战】---- 批量将图片转换成base64工具开发

【python 实战】---- 批量将图片转换成base64工具开发

作者头像
Rattenking
发布2022-01-06 20:12:44
2.7K0
发布2022-01-06 20:12:44
举报
文章被收录于专栏:RattenkingRattenking

1. 目标

  1. 学会将当前文件夹下的图片【‘jpg’, ‘png’, ‘jpeg’, ‘bmp’】,转换成base64,保存到icon.js的文件中;
  2. 学会读取图片文件,将文件转成 base64 的字符串;
  3. 学会获取文件夹下的所有图片文件;
  4. 学会将 base64 的字符串存入 icon.js 文件中。

2. 引入依赖模块

代码语言:javascript
复制
import os
import base64

3. 获取文件夹下所有的文件

  1. 读取当前给出的路径下的所有文件和文件夹名称
  2. 返回所有文件和文件夹名称列表
代码语言:javascript
复制
# 获取文件夹下所有的文件
def get_all_file(path):
  names = None
  try:
    names = os.listdir(path)
  except Exception as e:
    print(e)
  else:
    return names

4. 获取文件列表中的图片列表

  1. 循环传入的文件和文件夹列表
  2. 切割获取文件后缀名称
  3. 判断后缀名是不是 [‘jpg’, ‘png’, ‘jpeg’, ‘bmp’] 图片后缀名
  4. 是就存入图片列表
  5. 返回收集的图片名称列表
代码语言:javascript
复制
# 获取文件列表中的图片列表
def get_all_images(files):
  images = []
  try:
    for name in files:
      suffix = name.split('.').pop()
      if suffix in ['jpg', 'png', 'jpeg', 'bmp']:
        images.append(name)
  except Exception as e:
    print(e)
  else:
    return images

5. 获取 base64 的列表

  1. 创建写入 icon.js 文件的内容列表
  2. 循环图片名列表
  3. 将每个图片转成 base64 的字符串
  4. 将图片名和【base64 的字符串】组成key:value的键值对存入列表
  5. 循环完成补全js文件的输出
  6. 返回icon.js的内容列表
代码语言:javascript
复制
# 获取 base64 的列表
def get_images_base64(path, files):
  jss = [
    "const icon = {\n"
  ]
  try:
    for name in files:
      suffix = name.split('.')[0]
      img_url = f'{path}/{name}'
      base_img = img_to_base64(img_url)
      jss.append(f'  "{suffix}Icon": "{base_img}",\n')
  except Exception as e:
    print(e)
  else:
    jss.append("}\n")
    jss.append("module.exports = icon;")
    return jss

6. 创建 js 文件,写入内容

  1. 创建传入的js名称
  2. 将内容列表写入文件
代码语言:javascript
复制
# 创建 js 文件,写入内容
def create_js_folder(path, foldername, base_imgs):
  try:
    with open(path + "/" + foldername + ".js", "w",encoding="utf-8") as js:
      js.writelines(base_imgs)
  except Exception as e:
    print(e)

7. 完整代码

代码语言:javascript
复制
#!/usr/bin/env python
"""
@Author  :Rattenking
@CSDN	 :https://blog.csdn.net/m0_38082783
"""

import os
import time
import base64

# 将图片转换成base64
def img_to_base64(path):
  with open(path,"rb") as f:
    base64_data = base64.b64encode(f.read())
    return f'data:image/jpg;base64,{base64_data.decode()}'

# 获取文件列表中的图片列表
def get_all_images(files):
  images = []
  try:
    for name in files:
      suffix = name.split('.').pop()
      if suffix in ['jpg', 'png', 'jpeg', 'bmp']:
        images.append(name)
  except Exception as e:
    print(e)
  else:
    return images

# 获取文件夹下所有的文件
def get_all_file(path):
  names = None
  try:
    names = os.listdir(path)
  except Exception as e:
    print(e)
  else:
    return names

# 创建 js 文件,写入内容
def create_js_folder(path, foldername, base_imgs):
  try:
    with open(path + "/" + foldername + ".js", "w",encoding="utf-8") as js:
      js.writelines(base_imgs)
  except Exception as e:
    print(e)

# 获取 base64 的列表
def get_images_base64(path, files):
  jss = [
    "const icon = {\n"
  ]
  try:
    for name in files:
      suffix = name.split('.')[0]
      img_url = f'{path}/{name}'
      base_img = img_to_base64(img_url)
      jss.append(f'  "{suffix}Icon": "{base_img}",\n')
  except Exception as e:
    print(e)
  else:
    jss.append("}\n")
    jss.append("module.exports = icon;")
    return jss

if __name__ == "__main__":
  start_time = int(round(time.time() * 1000))
  path = "./"
  # 获取所有的文件
  files = get_all_file(path)
  
  # 获取所有的图片
  images = get_all_images(files)
  
  # 将图片列表转base64字符串
  icons = get_images_base64(path, images)

  # 创建 icon 的js文件
  create_js_folder(path, "icon", icons)

  end_time = int(round(time.time() * 1000))
  print(f'本次图片转换时间为:{end_time - start_time}ms')

8. 总结

  1. 由于微信小程序开发,很多小图标放服务器替换不方便,所需要将图标转base64,但是一个一个转换,比较麻烦,采用【批量将图片转base64工具.exe】工具,可以快速将当前文件夹下的图标转成一个icon.js文件,开发中只需要读取这个文件中对应的图片名!

9.使用

存放图标的文件夹放入转换工具

在这里插入图片描述
在这里插入图片描述

运行工具生成 icon.js

在这里插入图片描述
在这里插入图片描述

在使用页面引入 icon.js

在这里插入图片描述
在这里插入图片描述

注意生成的base64的图片名称是在原来图片名称后加了Icon的后缀

在这里插入图片描述
在这里插入图片描述

wxml 界面使用图标

在这里插入图片描述
在这里插入图片描述

更新图标只需要将图标放入文件夹重新运行工具【方便快捷,不需要修改替换之前代码】

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 目标
  • 2. 引入依赖模块
  • 3. 获取文件夹下所有的文件
  • 4. 获取文件列表中的图片列表
  • 5. 获取 base64 的列表
  • 6. 创建 js 文件,写入内容
  • 7. 完整代码
  • 8. 总结
  • 9.使用
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档