ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1142|回复: 11

[分享] 基于UOS系统下WPS JSA的JPG图片文件BASE64格式转换的Shell应用实例

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-4 16:13 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 xx6000 于 2024-3-4 16:31 编辑

最近在研究JPG格式的图片文件与BASE64互转的问题中使用了Shell调用Python进行转换并显示在单元格中,感觉很有成就感。基本原理如下:

1.先选取欲编码的JPG文件或要解码的txt文件,可以使用Application.FileDialog(msoFileDialogFilePicker)
2.根据编码或解码的标志依次实现下面的程序
(1)用OPEN PUT等语句写一段编码或解码的PYTHON程序和BASH文件
(2)Shell调用事先在/opt/apps路径下写好的ch.bash来给调用编码解码的BASH文件赋予执行权限
(3)Shell执行bash文件开始编码或解码
(4)显示编码或解码文件和图片
附件包含了程序的内容和ch.bash文件,新建一个ET文件,打开文本文件将内容拷贝到JSA模块中,bash文件放到/opt/apps中
程序界面如下图所示:



SHEET中的布局

SHEET中的布局

ls.rar

1.96 KB, 下载次数: 30

程序文件

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-3-4 16:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-3-4 17:06 | 显示全部楼层
uos很够用,自带python、perl、busybox等,其中busybox里就有一个base64转码工具,这些都是可以直接用的
但是glibc版本比较旧,不能安装新版python或golang之类,所以尝试新工具不太方便
和uos一家的deepin开发版支持新东西

给楼主点赞!!!

如果写了bash脚本,可以不用python,只用base64命令就可以转换

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-4 19:41 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wanghan519 发表于 2024-3-4 17:06
uos很够用,自带python、perl、busybox等,其中busybox里就有一个base64转码工具,这些都是可以直接用的
...

我之所以这么写是为了在JSA中可以把bash,python以及转换结果可以集成式在表格JSA中运行,而不用在JSA以外再运行其他程序,这样显得好像是JSA直接可以完成的效果。

TA的精华主题

TA的得分主题

发表于 2024-3-5 13:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 perfect131 于 2024-3-5 13:09 编辑

换个思路
(1) 用 bash 读取图片文件字节流,把字节转int一行一行放入新的txt中(一行控制 256还是512字节)
(2) 用jsa  lineinput逐行读取 这个txt内容
(3) 循环 把字节赋值给 uint8array 数组 ,再用 js-base64 fromuint8array 获取base64
这样 不需要py 了
不过 第一步较关键

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-5 15:38 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wanghan519 发表于 2024-3-4 17:06
uos很够用,自带python、perl、busybox等,其中busybox里就有一个base64转码工具,这些都是可以直接用的
...

busybox没用过,怎么使用它的base64转码工具?命令是啥?能得到啥结果?请wanghan519指点一二!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-5 15:39 来自手机 | 显示全部楼层
perfect131 发表于 2024-3-5 13:04
换个思路
(1) 用 bash 读取图片文件字节流,把字节转int一行一行放入新的txt中(一行控制 256还是512字节 ...

bash咋获取字节流?perfect131有啥办法能做到这一点,请给个方向?我就是困在获取字节流的地方,所以才使用py来解决的。如果有更简单的方法当然最好了

TA的精华主题

TA的得分主题

发表于 2024-3-5 16:25 | 显示全部楼层
xx6000 发表于 2024-3-5 15:38
busybox没用过,怎么使用它的base64转码工具?命令是啥?能得到啥结果?请wanghan519指点一二!:handshak ...

linux由内核和一系列应用构成,busybox是当年为了把内核和常用软件塞到一张1.44M软盘里而弄出来的,特别小,但功能上实现了大半个linux系统应用
目前安卓手机里都自带busybox,用来做虚拟系统有个很流行的超小系统alpine就是busybox,windows里有busybox-w32可以把你写的sh脚本打包成独立的0.6M的exe发给别人用,还有很多地方都会用到busybox
简单来说,busybox提供了大半个linux系统必须的应用,功能强大,体积只需要0.6M
uos系统也自带busybox,其他系统有的自带有的需要装一下
比如要把a.jpg转为base64编码的文本,在uos里只需
  1. busybox base64 a.jpg > a.txt
复制代码
如果需要指定每行宽度,用-w参数
  1. busybox base64 -w 200 a.jpg > a.txt
复制代码
busybox这个命令的第一个参数是你要执行的命令,最常用的包括文本编辑awk sed;字符编码转换iconv;转码base64;压缩解压xz gzip;无限精度计算bc;网络;进程;文件;也包括一个精简的bash,所以可以把sh脚本打包成exe
都是基础功能,有很多坑,但足够了,用jsa的shell写脚本的话,可以方便发给别人,只需要一个busybox-w32.exe对方就可以运行你的脚本


TA的精华主题

TA的得分主题

发表于 2024-3-5 16:30 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wanghan519 于 2024-3-5 17:12 编辑
xx6000 发表于 2024-3-5 15:38
busybox没用过,怎么使用它的base64转码工具?命令是啥?能得到啥结果?请wanghan519指点一二!:handshak ...


写了一堆busybox介绍正在审核,如果是要二进制转数字,busybox里的xxd就是做这个的,也可以指定每行多长,和base64用起来一样

简单说,busybox就是大半个linux系统,只有0.6M却提供了大量核心常用命令,发给用户这个就相当于提供了整个运行环境
awk提供数组与字典,bc无限精度计算,大量文件操作,网络请求,socket,基本上平替Excel常见需求甚至更多,呃,仅限文本方面

TA的精华主题

TA的得分主题

发表于 2024-3-5 16:32 来自手机 | 显示全部楼层
https://club.excelhome.net/forum.php?mod=viewthread&tid=1624384&extra=
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 15:42 , Processed in 0.049279 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表