背景:需要对一批图片转换为base64编码,因为数量多,不可能手动一张张转换,于是想到用linux写脚本完成
思路:思路较为简单,
第一:拿到所有图片文件名
第二:转换为base64
解决方法
将所有需要转换的图片存放到某一个空文件夹下,然后创建如下脚本,即可
#! /bin/bash
#=======================脚本说明区域===================================================
#功能说明:批量将图片文件转换未base64编码文件(txt格式)
#使用说明:将需要转换的批量图片与当前脚本存到到同一目录,
# 给当前脚本赋予可执行权限
# 执行脚本即可生成与之对应的txt文件,文件内存放base64编码
#功能验证:打开浏览器在地址栏输入data:image/png;base64,base64文件内容 回车即可显示原图片
#=======================参数区域===================================================
#是否合并false/true:即是否将所有转换结果合并到一个文件,默认false,即每个图片转换后单独生成一个base64文件
ifMerge=false
#=======================脚本区域===================================================
#获取图片文件列表
imageFileList=(`ls|grep -i -E "png|jpg|bmp"`)
#判断文件合并标识并循环转换所有图片
if [ ${ifMerge} = 'false' ];then
#不合并输出文件,即每个图片转换后单独生成一个与之对应的txt文件
for(( i=0;i<${#imageFileList[@]};i++ )); do
cat ${imageFileList[i]} |base64 >${imageFileList[i]}.txt
done;
else
#合并输出文件,即每个图片转换都将转换后的编码追加到base64.txt文件内,以空行隔开
cat /dev/null >base64.txt
for(( i=0;i<${#imageFileList[@]};i++ )); do
cat ${imageFileList[i]} |base64 >>base64.txt
echo ''>>base64.txt
done;
fi
验证
打开浏览器地址栏输入data:image/png;base64, 截图如下
然后打开脚本执行后生成的编码文件,复制内容追加到地址栏即可,结果如下
源脚本下载