lua 把图片转换成base64
调用实例
require("ZZBase64")
local files
local file = io.open("E:\\2342.jpg","rb") if file then
print "发现文件"
files = file:read("*a")
file:close()
else
print "没有找到文件"
end --图片转成base64文本
print(ZZBase64.encode(files))
帮助类
ZZBase64 = {}
local string = string ZZBase64.__code = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '', '', '', '', '', '', '', '', '', '', '+', '/',
};
ZZBase64.__decode = {}
for k,v in pairs(ZZBase64.__code) do
ZZBase64.__decode[string.byte(v,)] = k -
end function ZZBase64.encode(text)
local len = string.len(text)
local left = len %
len = len - left
local res = {}
local index =
for i = , len, do
local a = string.byte(text, i )
local b = string.byte(text, i + )
local c = string.byte(text, i + )
-- num = a<<16 + b<<8 + c
local num = a * + b * + c
for j = , do
--tmp = num >> ((4 -j) * 6)
local tmp = math.floor(num / ( ^ ((-j) * )))
--curPos = tmp&0x3f
local curPos = tmp % +
res[index] = ZZBase64.__code[curPos]
index = index +
end
end if left == then
ZZBase64.__left1(res, index, text, len)
elseif left == then
ZZBase64.__left2(res, index, text, len)
end
return table.concat(res)
end function ZZBase64.__left2(res, index, text, len)
local num1 = string.byte(text, len + )
num1 = num1 * --lshift 10
local num2 = string.byte(text, len + )
num2 = num2 * --lshift 2
local num = num1 + num2 local tmp1 = math.floor(num / ) --rShift 12
local curPos = tmp1 % +
res[index] = ZZBase64.__code[curPos] local tmp2 = math.floor(num / )
curPos = tmp2 % +
res[index + ] = ZZBase64.__code[curPos] curPos = num % +
res[index + ] = ZZBase64.__code[curPos] res[index + ] = "="
end function ZZBase64.__left1(res, index,text, len)
local num = string.byte(text, len + )
num = num * tmp = math.floor(num / )
local curPos = tmp % +
res[index ] = ZZBase64.__code[curPos] curPos = num % +
res[index + ] = ZZBase64.__code[curPos] res[index + ] = "="
res[index + ] = "="
end function ZZBase64.decode(text)
local len = string.len(text)
local left =
if string.sub(text, len - ) == "==" then
left =
len = len -
elseif string.sub(text, len) == "=" then
left =
len = len -
end local res = {}
local index =
local decode = ZZBase64.__decode
for i =, len, do
local a = decode[string.byte(text,i )]
local b = decode[string.byte(text,i + )]
local c = decode[string.byte(text,i + )]
local d = decode[string.byte(text,i + )] --num = a<<18 + b<<12 + c<<6 + d
local num = a * + b * + c * + d local e = string.char(num % )
num = math.floor(num / )
local f = string.char(num % )
num = math.floor(num / )
res[index ] = string.char(num % )
res[index + ] = f
res[index + ] = e
index = index +
end if left == then
ZZBase64.__decodeLeft1(res, index, text, len)
elseif left == then
ZZBase64.__decodeLeft2(res, index, text, len)
end
return table.concat(res)
end function ZZBase64.__decodeLeft1(res, index, text, len)
local decode = ZZBase64.__decode
local a = decode[string.byte(text, len + )]
local b = decode[string.byte(text, len + )]
local c = decode[string.byte(text, len + )]
local num = a * + b * + c local num1 = math.floor(num / ) %
local num2 = math.floor(num / ) %
res[index] = string.char(num1)
res[index + ] = string.char(num2)
end function ZZBase64.__decodeLeft2(res, index, text, len)
local decode = ZZBase64.__decode
local a = decode[string.byte(text, len + )]
local b = decode[string.byte(text, len + )]
local num = a * + b
num = math.floor(num / )
res[index] = string.char(num)
end
lua 把图片转换成base64的更多相关文章
- java 图片转换成base64字符串
import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...
- js绝对地址图片转换成base64的方法
//将图片转换成base64 function getBase64Image(url, callback){ var canvas = document.createElement('canvas') ...
- Java对网络图片/本地图片转换成Base64编码和解码
一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...
- delphi将图片转换成Base64编码函数
{************************************************************************** 名称: BaseImage 参数: fn: TF ...
- Base64字符保存图片,图片转换成Base64字符编码
//文件转换成Base64编码 public static String getFileBase64Str(String filePath) throws IOException { String f ...
- 利用PHP将图片转换成base64编码的实现方法
先来说一下为什么我们要对图片base64编码 base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一.base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于网络传输. ...
- 图片转换成Base64编码集成到html文件
首先为什么要这么做? 原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...
- JS将图片转换成Base64码
直接上代码 html页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- data:image/png;base64 上传图像将图片转换成base64格式
大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJ ...
随机推荐
- 微服务中一个项目install打包总是失败
在微服务的一个项目中install打包时总是报错如下: [INFO] Scanning for projects... [INFO] [INFO] -------------------------- ...
- zabbix监控linux 以及监控mysql
Zabbix监控Linux主机设置方法 linux客户端 :59.128 安装了mysql 配置zabbix的yum源 rpm -ivh http://repo.zabbix.com/zabbix/2 ...
- 安装Linux系统Centos6版本
1.下载VMware软件 2.下载Centos6文件 http://archive.kernel.org/centos-vault/6.8/isos/x86_64/CentOS-6.8-x86_64- ...
- 《新标准C++程序设计》2.1-2.3(C++学习笔记3)
1.结构化程序设计的不足 程序=算法+数据结构 数据结构和变量相对应,算法和函数相对应,算法是用来操作数据结构的. 结构化程序设计中,函数和其所操作的数据结构,没有直观的联系.随着程序规模的增加,程序 ...
- 当spring单元测试需要用到临时表的时候
需要将整个单元测试的方法交给spring的事务管理器控制. 两种解决方法: 1.加载的spring配置文件中advice要切到需要测试的方法. 2.单元测试类继承AbstractTransaction ...
- Java查漏补缺(3)(面向对象相关)
Java查漏补缺(3) 继承·抽象类·接口·静态·权限 相关 this与super关键字 this的作用: 调用成员变量(可以用来区分局部变量和成员变量) 调用本类其他成员方法 调用构造方法(需要在方 ...
- grep sed akw
sed参考 #打印2-4行 [root@localhost ~]# sed -n '2,4p' test [root@localhost ~]# awk 'NR==2,NR==4{print}' te ...
- 11. react 基础 使用charles 模拟接口数据
charles参考文档 charles官网 模拟数据 模拟 axios 请求的数据 eg: 1. 编写 axios 请求 axios.get('/api/xxx') .then(()=>{ale ...
- DRF项目之解决浏览器同源策略问题
DRF项目,是一个前后端分离的Web框架. 本项目中,我们前端采用的是VUE框架. 前后端分离的情况就会出现一个问题,前端的Ajax请求无法请求到后端API(接口). 那么,为什么会出现这种问题呢? ...
- [转]java 的HashMap底层数据结构
java 的HashMap底层数据结构 HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-v ...