调用实例

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的更多相关文章

  1. java 图片转换成base64字符串

    import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...

  2. js绝对地址图片转换成base64的方法

    //将图片转换成base64 function getBase64Image(url, callback){ var canvas = document.createElement('canvas') ...

  3. Java对网络图片/本地图片转换成Base64编码和解码

    一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...

  4. delphi将图片转换成Base64编码函数

    {************************************************************************** 名称: BaseImage 参数: fn: TF ...

  5. Base64字符保存图片,图片转换成Base64字符编码

    //文件转换成Base64编码 public static String getFileBase64Str(String filePath) throws IOException { String f ...

  6. 利用PHP将图片转换成base64编码的实现方法

    先来说一下为什么我们要对图片base64编码 base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一.base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于网络传输. ...

  7. 图片转换成Base64编码集成到html文件

    首先为什么要这么做?  原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...

  8. JS将图片转换成Base64码

    直接上代码 html页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  9. data:image/png;base64 上传图像将图片转换成base64格式

    大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJ ...

随机推荐

  1. 学习spring第6天(aop获取目标方法参数)

    关于<aop:around>中的方法,需要第一个参数为ProceedJoinPoint,在方法体中通过该参数调用proceed()才能使目标方法得到调用. 当一个切面中有多个<aop ...

  2. sudo 提权漏洞(CVE-2019-14287)复现 (10.16 第二十二天)

    sudo是Linux系统命令,让普通账号以root身份去执行某些命令,比,安装软件.查看某些配置文件.关机.重启等操作,如果普通账号需要使用sudo需要修改配置文件/etc/sudoers,将sudo ...

  3. 实战 迁移学习 VGG19、ResNet50、InceptionV3 实践 猫狗大战 问题

    实战 迁移学习 VGG19.ResNet50.InceptionV3 实践 猫狗大战 问题   参考博客:::https://blog.csdn.net/pengdali/article/detail ...

  4. docker-compose 安装 mongodb

    1. 修改 docker-compose.yml version: "2.1" services: php7.1: build: ./php image: php7.1-ext p ...

  5. SQL中将某个字段根据分隔符分割成两个字段

    假设有表如下: 商品名称 耐克/DS001 安踏/AT002 阿迪达斯/AD009 使用SQL将[商品名称]字段按照分隔符‘/’进行分割后实现以下效果: 品牌 商品代码 耐克 DS001 安踏 AT0 ...

  6. php序列化(serialize)和反序列化(unserialize)函数

    用法:serialize().unserialize() 适用情境:serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方.这有利于存储或传递 PHP 的值,同时不 ...

  7. Vue iview 表单封装验证

    以下内容转自iview社区,仅供自己查看使用 Form表单部分 <div> <Form ref="FormOne" :model="FormOne&qu ...

  8. mysql时间类型总结及常用时间函数

    日期时间和类型 常用日期和时间类型 字节 year                1       表示年份                   值范围:(1901----2155) date     ...

  9. SpringCloud学习之Config分布式配置中心(八)

    统一配置中心概述 如果微服务架构中没有使用统一配置中心时,所存在的问题: 配置文件分散在各个项目里,不方便维护 配置内容安全与权限,实际开发中,开发人员是不知道线上环境的配置的 更新配置后,项目需要重 ...

  10. a.e. almost everywhere i.e. 是拉丁语id est的缩写

    a.e.     :   almost everywhere i.e.是拉丁语id est的缩写,意为“也就是说,与英文that is的意思一样