|
|
资讯缩略图:
资讯发布日期:2026-09-16
资讯发布简介:AIWROK软件的Base64工具集
资讯关键词:AIWROK软件的Base64工具集
资讯所属分类:IT资讯 SEO资讯
联系:
① 本信息收集于网络,如有不对的地方欢迎联系我纠正! ② 本信息免费收录,不存在价格的问题! ③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!
④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/
资讯详细描述
 | |  |  | AIWROK软件的Base64工具集
- /**
- * AIWROK Base64 工具集
- * 集合所有 Base64 相关用法,含完整日志输出和案例演示
- */
- // 导入必要的 Java 类
- importClass(android.util.Base64);
- importClass(java.io.FileInputStream);
- importClass(java.io.FileOutputStream);
- importClass(java.io.File);
- // ======================== 工具函数 ========================
- /**
- * 倒计时(秒)
- * @param {number} seconds - 倒计时秒数
- */
- function countdown(seconds) {
- for (var i = seconds; i >= 1; i--) {
- printl(" ⏳ " + i + " 秒后开始下一个演示...");
- sleep.millisecond(1000);
- }
- printl(" ▶ 开始!");
- }
- /**
- * 分隔线
- */
- function divider(title) {
- printl("");
- printl("================================================");
- printl(" " + title);
- printl("================================================");
- }
- // ======================== 1. 图片对象转 Base64 ========================
- /**
- * AIWROK Image 对象转 Base64
- * @param {object} img - AIWROK 的 Image 对象
- * @returns {string} Base64 字符串
- */
- function imageToBase64(img) {
- try {
- if (!img) {
- printl("[ERROR] imageToBase64: 传入的图片对象为空");
- return null;
- }
- var base64 = img.toBase64();
- printl("[imageToBase64] 转换成功,大小: " + base64.length() + " 字符");
- return base64;
- } catch (e) {
- printl("[ERROR] imageToBase64 失败: " + e.message);
- return null;
- }
- }
- // ======================== 2. 图片文件转 Base64 ========================
- /**
- * 图片文件转 Base64
- * @param {string} imagePath - 图片文件路径
- * @returns {string} Base64 字符串
- */
- function imageFileToBase64(imagePath) {
- try {
- var file = new File(imagePath);
- if (!file.exists()) {
- printl("[ERROR] imageFileToBase64: 文件不存在: " + imagePath);
- return null;
- }
- var fis = new FileInputStream(file);
- var bytes = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, file.length());
- fis.read(bytes);
- fis.close();
- var base64 = Base64.encodeToString(bytes, Base64.NO_WRAP);
- printl("[imageFileToBase64] 转换成功,文件大小: " + file.length() + " 字节,Base64: " + base64.length() + " 字符");
- return base64;
- } catch (e) {
- printl("[ERROR] imageFileToBase64 失败: " + e.message);
- return null;
- }
- }
- // ======================== 3. 字符串转 Base64 ========================
- /**
- * 字符串转 Base64
- * @param {string} str - 要编码的字符串
- * @returns {string} Base64 字符串
- */
- function stringToBase64(str) {
- try {
- var bytes = new java.lang.String(str).getBytes("UTF-8");
- var base64 = Base64.encodeToString(bytes, Base64.NO_WRAP);
- printl("[stringToBase64] 编码成功: \"" + str + "\" → " + base64);
- return base64;
- } catch (e) {
- printl("[ERROR] stringToBase64 失败: " + e.message);
- return null;
- }
- }
- // ======================== 4. Base64 转字符串 ========================
- /**
- * Base64 转字符串
- * @param {string} base64Str - Base64 字符串
- * @returns {string} 解码后的字符串
- */
- function base64ToString(base64Str) {
- try {
- var bytes = Base64.decode(base64Str, Base64.NO_WRAP);
- var str = new java.lang.String(bytes, "UTF-8");
- printl("[base64ToString] 解码成功: " + base64Str.substring(0, Math.min(30, base64Str.length())) + "... → \"" + str + "\"");
- return str;
- } catch (e) {
- printl("[ERROR] base64ToString 失败: " + e.message);
- return null;
- }
- }
- // ======================== 5. Base64 转图片文件 ========================
- /**
- * Base64 转图片文件
- * @param {string} base64Str - Base64 字符串
- * @param {string} outputPath - 输出文件路径
- * @returns {boolean} 是否成功
- */
- function base64ToImageFile(base64Str, outputPath) {
- try {
- var bytes = Base64.decode(base64Str, Base64.NO_WRAP);
- var fos = new FileOutputStream(outputPath);
- fos.write(bytes);
- fos.flush();
- fos.close();
- printl("[base64ToImageFile] 保存成功: " + outputPath + ",大小: " + bytes.length + " 字节");
- return true;
- } catch (e) {
- printl("[ERROR] base64ToImageFile 失败: " + e.message);
- return false;
- }
- }
- // ======================== 6. 截图并转 Base64 ========================
- /**
- * 全屏截图转 Base64
- * @returns {string} Base64 字符串
- */
- function screenshotToBase64() {
- try {
- var img = screen.screenShotFull();
- if (!img) {
- printl("[ERROR] screenshotToBase64: 截图返回空");
- return null;
- }
- var base64 = img.toBase64();
- img.recycle();
- printl("[screenshotToBase64] 截图转Base64成功,大小: " + base64.length() + " 字符");
- return base64;
- } catch (e) {
- printl("[ERROR] screenshotToBase64 失败: " + e.message);
- return null;
- }
- }
- // ======================== 7. 区域截图并转 Base64 ========================
- /**
- * 区域截图转 Base64(使用 Android Bitmap API 裁剪)
- * @param {number} x - 左上角 X 坐标(像素)
- * @param {number} y - 左上角 Y 坐标(像素)
- * @param {number} width - 宽度(像素)
- * @param {number} height - 高度(像素)
- * @returns {string} Base64 字符串
- */
- function regionScreenshotToBase64(x, y, width, height) {
- try {
- // 先全屏截图
- var img = screen.screenShotFull();
- if (!img) {
- printl("[ERROR] regionScreenshotToBase64: 截图返回空");
- return null;
- }
- // 获取 Bitmap 对象
- var bitmap = img.getBitmap();
- if (!bitmap) {
- printl("[ERROR] regionScreenshotToBase64: 获取 Bitmap 失败");
- img.recycle();
- return null;
- }
- // 使用 Android Bitmap API 裁剪
- var croppedBitmap = android.graphics.Bitmap.createBitmap(bitmap, x, y, width, height);
- img.recycle();
- if (!croppedBitmap) {
- printl("[ERROR] regionScreenshotToBase64: 裁剪失败");
- return null;
- }
- // 转为 Base64
- var baos = new java.io.ByteArrayOutputStream();
- croppedBitmap.compress(android.graphics.Bitmap.CompressFormat.PNG, 100, baos);
- var bytes = baos.toByteArray();
- var base64 = android.util.Base64.encodeToString(bytes, android.util.Base64.NO_WRAP);
-
- croppedBitmap.recycle();
- baos.close();
- printl("[regionScreenshotToBase64] 区域截图转Base64成功,区域: (" + x + "," + y + "," + width + "," + height + "),大小: " + base64.length() + " 字符");
- return base64;
- } catch (e) {
- printl("[ERROR] regionScreenshotToBase64 失败: " + e.message);
- return null;
- }
- }
- // ======================== 8. 通用文件转 Base64 ========================
- /**
- * 通用文件转 Base64
- * @param {string} filePath - 文件路径
- * @returns {string} Base64 字符串
- */
- function fileToBase64(filePath) {
- try {
- var file = new File(filePath);
- if (!file.exists()) {
- printl("[ERROR] fileToBase64: 文件不存在: " + filePath);
- return null;
- }
- var fis = new FileInputStream(file);
- var bytes = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, file.length());
- fis.read(bytes);
- fis.close();
- var base64 = Base64.encodeToString(bytes, Base64.NO_WRAP);
- printl("[fileToBase64] 转换成功: " + filePath + ",大小: " + base64.length() + " 字符");
- return base64;
- } catch (e) {
- printl("[ERROR] fileToBase64 失败: " + e.message);
- return null;
- }
- }
- // ======================== 9. Base64 转通用文件 ========================
- /**
- * Base64 转通用文件
- * @param {string} base64Str - Base64 字符串
- * @param {string} outputPath - 输出文件路径
- * @returns {boolean} 是否成功
- */
- function base64ToFile(base64Str, outputPath) {
- try {
- var bytes = Base64.decode(base64Str, Base64.NO_WRAP);
- var fos = new FileOutputStream(outputPath);
- fos.write(bytes);
- fos.flush();
- fos.close();
- printl("[base64ToFile] 保存成功: " + outputPath + ",大小: " + bytes.length + " 字节");
- return true;
- } catch (e) {
- printl("[ERROR] base64ToFile 失败: " + e.message);
- return false;
- }
- }
- // ======================== 10. 获取 Base64 文件类型 ========================
- /**
- * 获取 Base64 字符串的文件类型
- * @param {string} base64Str - Base64 字符串
- * @returns {string} 文件类型
- */
- function getBase64FileType(base64Str) {
- try {
- var bytes = Base64.decode(base64Str.substring(0, 100), Base64.NO_WRAP);
- if (bytes[0] == 0x89 && bytes[1] == 0x50 && bytes[2] == 0x4E && bytes[3] == 0x47) {
- printl("[getBase64FileType] 检测到类型: image/png");
- return "image/png";
- }
- if (bytes[0] == 0xFF && bytes[1] == 0xD8 && bytes[2] == 0xFF) {
- printl("[getBase64FileType] 检测到类型: image/jpeg");
- return "image/jpeg";
- }
- if (bytes[0] == 0x47 && bytes[1] == 0x49 && bytes[2] == 0x46 && bytes[3] == 0x38) {
- printl("[getBase64FileType] 检测到类型: image/gif");
- return "image/gif";
- }
- printl("[getBase64FileType] 未识别的文件类型");
- return "unknown";
- } catch (e) {
- printl("[ERROR] getBase64FileType 失败: " + e.message);
- return "unknown";
- }
- }
- // ======================== 11. fastCapture 截图转 Base64 ========================
- /**
- * 快速截图转 Base64(使用 screen.screenShotFull)
- * @returns {string} Base64 字符串
- */
- function fastCaptureToBase64() {
- try {
- var img = screen.screenShotFull();
- if (!img) {
- printl("[ERROR] fastCaptureToBase64: 截图返回空");
- return null;
- }
- var base64 = img.toBase64();
- img.recycle();
- printl("[fastCaptureToBase64] 快速截图转Base64成功,大小: " + base64.length() + " 字符");
- return base64;
- } catch (e) {
- printl("[ERROR] fastCaptureToBase64 失败: " + e.message);
- return null;
- }
- }
- // ======================== 12. 图片对象转 JpgBase64 ========================
- /**
- * AIWROK Image 对象转 JPG Base64(带压缩)
- * @param {object} img - AIWROK 的 Image 对象
- * @param {number} quality - JPEG 质量 0-100
- * @returns {string} Base64 字符串
- */
- function imageToJpgBase64(img, quality) {
- quality = quality || 80;
- try {
- if (!img) {
- printl("[ERROR] imageToJpgBase64: 传入的图片对象为空");
- return null;
- }
- var base64 = img.toJpgBase64(quality);
- printl("[imageToJpgBase64] JPG压缩转Base64成功,质量: " + quality + ",大小: " + base64.length() + " 字符");
- return base64;
- } catch (e) {
- printl("[ERROR] imageToJpgBase64 失败: " + e.message);
- return null;
- }
- }
- // ============================================================
- // 全部功能案例演示
- // ============================================================
- function demo() {
- printl("");
- printl("╔══════════════════════════════════════════════╗");
- printl("║ AIWROK Base64 工具集 - 全部演示 ║");
- printl("║ 共 12 个功能,逐个演示 ║");
- printl("╚══════════════════════════════════════════════╝");
- // ---- 演示 1: 字符串转 Base64 ----
- divider("演示 1/12: 字符串转 Base64");
- var testStr = "Hello, AIWROK!";
- printl("[案例] 将字符串 \"" + testStr + "\" 编码为 Base64");
- var encoded = stringToBase64(testStr);
- printl("[结果] 编码后: " + encoded);
- countdown(3);
- // ---- 演示 2: Base64 转字符串 ----
- divider("演示 2/12: Base64 转字符串");
- printl("[案例] 将 Base64 解码回原文");
- var decoded = base64ToString(encoded);
- printl("[结果] 解码后: " + decoded);
- countdown(3);
- // ---- 演示 3: 全屏截图转 Base64 ----
- divider("演示 3/12: 全屏截图转 Base64");
- printl("[案例] 截取全屏并转为 Base64");
- var screenB64 = screenshotToBase64();
- if (screenB64) {
- printl("[结果] 截图Base64大小: " + screenB64.length() + " 字符");
- }
- countdown(3);
- // ---- 演示 4: 区域截图转 Base64 ----
- divider("演示 4/12: 区域截图转 Base64");
- printl("[案例] 截取屏幕左上角 540x960 区域");
- var regionB64 = regionScreenshotToBase64(0, 0, 540, 960);
- if (regionB64) {
- printl("[结果] 区域截图Base64大小: " + regionB64.length() + " 字符");
- }
- countdown(3);
- // ---- 演示 5: fastCapture 截图转 Base64 ----
- divider("演示 5/12: fastCapture 快速截图转 Base64");
- printl("[案例] 使用 image.fastCapture() 快速截图");
- var fastB64 = fastCaptureToBase64();
- if (fastB64) {
- printl("[结果] 快速截图Base64大小: " + fastB64.length() + " 字符");
- }
- countdown(3);
- // ---- 演示 6: 图片对象转 Base64 ----
- divider("演示 6/12: 图片对象转 Base64");
- printl("[案例] 截图获取 Image 对象后转 Base64");
- var img = screen.screenShotFull();
- if (img) {
- var imgB64 = imageToBase64(img);
- if (imgB64) {
- printl("[结果] 图片对象Base64大小: " + imgB64.length() + " 字符");
- }
- img.recycle();
- }
- countdown(3);
- // ---- 演示 7: 图片对象转 JPG Base64(带压缩) ----
- divider("演示 7/12: 图片对象转 JPG Base64(带压缩)");
- printl("[案例] 截图后以 50% 质量压缩为 JPG Base64");
- var img2 = screen.screenShotFull();
- if (img2) {
- var jpgB64 = imageToJpgBase64(img2, 50);
- if (jpgB64) {
- printl("[结果] JPG压缩Base64大小: " + jpgB64.length() + " 字符");
- printl("[对比] 原PNG大小约 " + (screenB64 ? screenB64.length() : 0) + " 字符,JPG压缩后 " + jpgB64.length() + " 字符");
- }
- img2.recycle();
- }
- countdown(3);
- // ---- 演示 8: 截图保存为文件再转 Base64 ----
- divider("演示 8/12: 截图保存文件 → 文件转 Base64");
- printl("[案例] 先截图保存到文件,再从文件读取转 Base64");
- var testImgPath = "/sdcard/base64_test.png";
- var img3 = screen.screenShotFull();
- if (img3) {
- img3.save(testImgPath);
- img3.recycle();
- printl("[步骤1] 截图已保存: " + testImgPath);
- var fileB64 = imageFileToBase64(testImgPath);
- if (fileB64) {
- printl("[结果] 文件Base64大小: " + fileB64.length() + " 字符");
- }
- }
- countdown(3);
- // ---- 演示 9: 通用文件转 Base64 ----
- divider("演示 9/12: 通用文件转 Base64");
- printl("[案例] 将任意文件转为 Base64");
- var anyFileB64 = fileToBase64(testImgPath);
- if (anyFileB64) {
- printl("[结果] 通用文件Base64大小: " + anyFileB64.length() + " 字符");
- }
- countdown(3);
- // ---- 演示 10: Base64 转图片文件 ----
- divider("演示 10/12: Base64 转图片文件");
- printl("[案例] 将截图的 Base64 还原为图片文件");
- var outputPath = "/sdcard/base64_restored.png";
- if (screenB64) {
- var ok = base64ToImageFile(screenB64, outputPath);
- if (ok) {
- var restoredFile = new File(outputPath);
- printl("[结果] 还原图片大小: " + restoredFile.length() + " 字节");
- }
- }
- countdown(3);
- // ---- 演示 11: Base64 转通用文件 ----
- divider("演示 11/12: Base64 转通用文件");
- printl("[案例] 将 Base64 还原为通用文件");
- var outputPath2 = "/sdcard/base64_restored2.png";
- if (screenB64) {
- var ok2 = base64ToFile(screenB64, outputPath2);
- if (ok2) {
- var restoredFile2 = new File(outputPath2);
- printl("[结果] 还原文件大小: " + restoredFile2.length() + " 字节");
- }
- }
- countdown(3);
- // ---- 演示 12: 获取 Base64 文件类型 ----
- divider("演示 12/12: 获取 Base64 文件类型");
- printl("[案例] 检测截图 Base64 的文件格式");
- if (screenB64) {
- var fileType = getBase64FileType(screenB64);
- printl("[结果] 文件类型: " + fileType);
- }
- // ---- 总结 ----
- printl("");
- printl("╔══════════════════════════════════════════════╗");
- printl("║ 全部 12 个演示完成! ║");
- printl("╠══════════════════════════════════════════════╣");
- printl("║ 1. stringToBase64 字符串 → Base64 ║");
- printl("║ 2. base64ToString Base64 → 字符串 ║");
- printl("║ 3. screenshotToBase64 全屏截图 → Base64 ║");
- printl("║ 4. regionScreenshot 区域截图 → Base64 ║");
- printl("║ 5. fastCaptureToBase64 快速截图 → Base64 ║");
- printl("║ 6. imageToBase64 图片对象 → Base64 ║");
- printl("║ 7. imageToJpgBase64 图片 → JPG Base64 ║");
- printl("║ 8. imageFileToBase64 图片文件 → Base64 ║");
- printl("║ 9. fileToBase64 通用文件 → Base64 ║");
- printl("║ 10. base64ToImageFile Base64 → 图片文件 ║");
- printl("║ 11. base64ToFile Base64 → 通用文件 ║");
- printl("║ 12. getBase64FileType 检测 Base64 类型 ║");
- printl("╚══════════════════════════════════════════════╝");
- }
- // 直接运行演示
- demo();
复制代码
| |  | |  |
|
unto速识别验证码识别平台 AIWROK 接入示例nextnocontent
|