信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 2|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] AIWROK手机数据库MySQL数据库截图片批量上传操作脚本

[复制链接]

749

主题

833

帖子

5342

积分

积分
5342

资讯缩略图:

资讯发布日期:2025-12-29

资讯发布简介:AIWROK手机数据库MySQL数据库截图片批量上传操作脚本

资讯关键词:AIWROK手机数据库MySQL数据库截图片批量上传操作脚本

资讯所属分类:IT资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本 AIWROK手机数据库MySQL数据库截图片批量上传操作脚本 b2b软件

AIWROK手机数据库MySQL数据库截图片批量上传操作脚本 b2b软件
  1. //🍎交流QQ群711841924群一,苹果内测群,528816639
  2. // AIWROK软件数据库图片批量上传操作脚本
  3. // 实现读取本地图片、转换为Base64、上传到数据库、以及从数据库还原图片的功能

  4. print.log("===== 数据库图片上传操作脚本开始 =====");

  5. var conn = null;
  6. var pstmt = null;

  7. /**
  8. * Java原生方法:将文件转换为Base64字符串
  9. */
  10. function fileToBase64(filePath) {
  11.     try {
  12.         var file = new java.io.File(filePath);
  13.         if (!file.exists()) {
  14.             return null;
  15.         }
  16.         
  17.         var fis = new java.io.FileInputStream(file);
  18.         var buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024);
  19.         var bytesRead = 0;
  20.         var byteBuffer = [];
  21.         
  22.         while ((bytesRead = fis.read(buffer)) != -1) {
  23.             for (var i = 0; i < bytesRead; i++) {
  24.                 byteBuffer.push(buffer[i]);
  25.             }
  26.         }
  27.         
  28.         fis.close();
  29.         
  30.         var bytes = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, byteBuffer.length);
  31.         for (var i = 0; i < byteBuffer.length; i++) {
  32.             bytes[i] = byteBuffer[i];
  33.         }
  34.         
  35.         return android.util.Base64.encodeToString(bytes, android.util.Base64.NO_WRAP);
  36.     } catch (e) {
  37.         print.log("❌ 文件转Base64失败: " + e.message);
  38.         return null;
  39.     }
  40. }

  41. /**
  42. * Java原生方法:检查文件是否存在
  43. */
  44. function fileExists(filePath) {
  45.     return new java.io.File(filePath).exists();
  46. }

  47. /**
  48. * Java原生方法:获取文件大小
  49. */
  50. function fileLength(filePath) {
  51.     return new java.io.File(filePath).length();
  52. }

  53. /**
  54. * Java原生方法:获取文件名
  55. */
  56. function getFileName(filePath) {
  57.     return new java.io.File(filePath).getName();
  58. }

  59. /**
  60. * 连接数据库
  61. */
  62. function connectDatabase() {
  63.     try {
  64.         var url = "jdbc:mysql://38.12.31.15:3306/dddfguu";
  65.         var user = "dddfguu";
  66.         var password = "rAXyhnNkiNsChJ8e";
  67.         var params = "?useSSL=false&characterEncoding=utf8&connectTimeout=5000";
  68.         
  69.         print.log("正在连接数据库...");
  70.         conn = mysql.getConnection(url, user, password);
  71.         print.log("✅ 数据库连接成功");
  72.         return true;
  73.     } catch (e) {
  74.         print.log("❌ 数据库连接失败: " + e.message);
  75.         return false;
  76.     }
  77. }

  78. /**
  79. * 创建图片存储表
  80. */
  81. function createImageTable() {
  82.     try {
  83.         var sql = "CREATE TABLE IF NOT EXISTS images (" +
  84.                   "id INT AUTO_INCREMENT PRIMARY KEY, " +
  85.                   "name VARCHAR(255) NOT NULL, " +
  86.                   "path VARCHAR(500), " +
  87.                   "image_data LONGBLOB, " +
  88.                   "file_size INT, " +
  89.                   "image_width INT, " +
  90.                   "image_height INT, " +
  91.                   "mime_type VARCHAR(50), " +
  92.                   "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP" +
  93.                   ")";
  94.         
  95.         var stmt = conn.createStatement();
  96.         stmt.execute(sql);
  97.         stmt.close();
  98.         
  99.         print.log("✅ 图片存储表创建成功(或已存在)");
  100.         return true;
  101.     } catch (e) {
  102.         print.log("❌ 创建图片表失败: " + e.message);
  103.         return false;
  104.     }
  105. }

  106. /**
  107. * 检查表是否存在并显示表结构
  108. */
  109. function checkTableStructure() {
  110.     try {
  111.         var sql = "SHOW TABLES LIKE 'images'";
  112.         var stmt = conn.createStatement();
  113.         var rs = stmt.executeQuery(sql);
  114.         
  115.         if (rs.next()) {
  116.             print.log("✅ 表 images 已存在");
  117.             rs.close();
  118.             stmt.close();
  119.             
  120.             // 显示表结构
  121.             sql = "DESCRIBE images";
  122.             stmt = conn.createStatement();
  123.             rs = stmt.executeQuery(sql);
  124.             
  125.             print.log("表 images 的字段结构:");
  126.             while (rs.next()) {
  127.                 var columnName = rs.getString(1);
  128.                 var columnType = rs.getString(2);
  129.                 print.log("  - " + columnName + ": " + columnType);
  130.             }
  131.             rs.close();
  132.             stmt.close();
  133.             return true;
  134.         } else {
  135.             print.log("❌ 表 images 不存在,需要先创建表");
  136.             rs.close();
  137.             stmt.close();
  138.             return false;
  139.         }
  140.     } catch (e) {
  141.         print.log("❌ 检查表结构失败: " + e.message);
  142.         return false;
  143.     }
  144. }

  145. /**
  146. * 获取图片文件信息
  147. */
  148. function getImageInfo(imagePath) {
  149.     try {
  150.         if (!fileExists(imagePath)) {
  151.             print.log("❌ 图片文件不存在: " + imagePath);
  152.             return null;
  153.         }
  154.         
  155.         var fileSize = fileLength(imagePath);
  156.         var fileName = getFileName(imagePath);
  157.         var extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
  158.         
  159.         var mimeType = "image/jpeg";
  160.         if (extension === "png") {
  161.             mimeType = "image/png";
  162.         } else if (extension === "gif") {
  163.             mimeType = "image/gif";
  164.         } else if (extension === "webp") {
  165.             mimeType = "image/webp";
  166.         }
  167.         
  168.         print.log("图片文件信息:");
  169.         print.log("  路径: " + imagePath);
  170.         print.log("  文件名: " + fileName);
  171.         print.log("  文件大小: " + (fileSize / 1024).toFixed(2) + " KB");
  172.         print.log("  MIME类型: " + mimeType);
  173.         
  174.         return {
  175.             path: imagePath,
  176.             name: fileName,
  177.             size: fileSize,
  178.             mimeType: mimeType
  179.         };
  180.     } catch (e) {
  181.         print.log("❌ 获取图片信息失败: " + e.message);
  182.         return null;
  183.     }
  184. }

  185. /**
  186. * 将本地图片上传到数据库
  187. * @param {String} imagePath - 图片本地路径
  188. * @param {String} imageName - 图片名称(可选,默认使用文件名)
  189. */
  190. function uploadImageToDatabase(imagePath, imageName) {
  191.     try {
  192.         var imageInfo = getImageInfo(imagePath);
  193.         if (!imageInfo) {
  194.             return false;
  195.         }
  196.         
  197.         var name = imageName || imageInfo.name;
  198.         
  199.         // 将图片文件转换为Base64字符串
  200.         print.log("正在将图片转换为Base64字符串...");
  201.         var base64Data = fileToBase64(imagePath);
  202.         
  203.         if (!base64Data) {
  204.             print.log("❌ 图片转Base64失败");
  205.             return false;
  206.         }
  207.         
  208.         print.log("✅ Base64字符串生成成功,长度: " + base64Data.length + " 字符");
  209.         
  210.         // 将Base64字符串转换为字节数组
  211.         // 格式: "data:image/jpeg;base64,..." 需要去除前缀
  212.         var base64Content = base64Data;
  213.         var prefix = "data:" + imageInfo.mimeType + ";base64,";
  214.         if (base64Data.indexOf(prefix) === 0) {
  215.             base64Content = base64Data.substring(prefix.length);
  216.         }
  217.         
  218.         // 使用预编译语句插入图片数据
  219.         var sql = "INSERT INTO images (name, path, image_data, file_size, mime_type) VALUES (?, ?, ?, ?, ?)";
  220.         pstmt = conn.prepareStatement(sql);
  221.         pstmt.setString(1, name);
  222.         pstmt.setString(2, imagePath);
  223.         
  224.         // 设置BLOB参数 - 使用setBytes方法
  225.         var bytes = android.util.Base64.decode(base64Content, android.util.Base64.NO_WRAP);
  226.         pstmt.setBytes(3, bytes);
  227.         
  228.         pstmt.setInt(4, imageInfo.size);
  229.         pstmt.setString(5, imageInfo.mimeType);
  230.         
  231.         var rowsAffected = pstmt.executeUpdate();
  232.         pstmt.close();
  233.         pstmt = null;
  234.         
  235.         if (rowsAffected > 0) {
  236.             print.log("✅ 图片 '" + name + "' 上传成功,影响行数: " + rowsAffected);
  237.             return true;
  238.         } else {
  239.             print.log("❌ 图片上传失败,影响行数为0");
  240.             return false;
  241.         }
  242.     } catch (e) {
  243.         print.log("❌ 上传图片到数据库失败: " + e.message);
  244.         if (pstmt) {
  245.             try { pstmt.close(); } catch(err) {}
  246.             pstmt = null;
  247.         }
  248.         return false;
  249.     }
  250. }

  251. /**
  252. * 从数据库下载图片并保存到本地
  253. * @param {Number} imageId - 数据库中的图片ID
  254. * @param {String} outputPath - 保存路径
  255. */
  256. function downloadImageFromDatabase(imageId, outputPath) {
  257.     try {
  258.         var sql = "SELECT name, image_data, mime_type FROM images WHERE id = ?";
  259.         pstmt = conn.prepareStatement(sql);
  260.         pstmt.setInt(1, imageId);
  261.         
  262.         var rs = pstmt.executeQuery();
  263.         
  264.         if (rs.next()) {
  265.             var name = rs.getString("name");
  266.             var imageData = rs.getBytes("image_data");
  267.             var mimeType = rs.getString("mime_type");
  268.             
  269.             // 将字节数组转换为Base64字符串
  270.             var base64Content = android.util.Base64.encodeToString(imageData, android.util.Base64.NO_WRAP);
  271.             
  272.             // 添加Base64前缀
  273.             var prefix = "data:" + mimeType + ";base64,";
  274.             var base64WithPrefix = prefix + base64Content;
  275.             
  276.             // 使用 new image().readBase64() 和 save() 保存为文件
  277.             var imageObj = new image();
  278.             imageObj.readBase64(base64WithPrefix);
  279.             imageObj.save(outputPath);
  280.             
  281.             print.log("✅ 图片下载成功: " + outputPath);
  282.             print.log("  图片名称: " + name);
  283.             print.log("  MIME类型: " + mimeType);
  284.             print.log("  文件大小: " + (imageData.length / 1024).toFixed(2) + " KB");
  285.             
  286.             rs.close();
  287.             pstmt.close();
  288.             pstmt = null;
  289.             
  290.             return true;
  291.         } else {
  292.             print.log("❌ 未找到ID为 " + imageId + " 的图片");
  293.             rs.close();
  294.             pstmt.close();
  295.             pstmt = null;
  296.             return false;
  297.         }
  298.     } catch (e) {
  299.         print.log("❌ 从数据库下载图片失败: " + e.message);
  300.         if (pstmt) {
  301.             try { pstmt.close(); } catch(err) {}
  302.             pstmt = null;
  303.         }
  304.         return false;
  305.     }
  306. }

  307. /**
  308. * 查询数据库中所有图片信息
  309. */
  310. function queryAllImages() {
  311.     try {
  312.         var sql = "SELECT id, name, path, file_size, mime_type, created_at FROM images ORDER BY id";
  313.         var stmt = conn.createStatement();
  314.         var rs = stmt.executeQuery(sql);
  315.         
  316.         print.log("数据库中的图片列表:");
  317.         var count = 0;
  318.         
  319.         while (rs.next()) {
  320.             count++;
  321.             var id = rs.getInt("id");
  322.             var name = rs.getString("name");
  323.             var path = rs.getString("path");
  324.             var fileSize = rs.getInt("file_size");
  325.             var mimeType = rs.getString("mime_type");
  326.             var createdAt = rs.getString("created_at");
  327.             
  328.             print.log("  [" + id + "] " + name);
  329.             print.log("      大小: " + (fileSize / 1024).toFixed(2) + " KB");
  330.             print.log("      类型: " + mimeType);
  331.             print.log("      创建时间: " + createdAt);
  332.         }
  333.         
  334.         rs.close();
  335.         stmt.close();
  336.         
  337.         if (count === 0) {
  338.             print.log("  数据库中没有图片记录");
  339.         } else {
  340.             print.log("  共 " + count + " 张图片");
  341.         }
  342.         
  343.         return true;
  344.     } catch (e) {
  345.         print.log("❌ 查询图片列表失败: " + e.message);
  346.         return false;
  347.     }
  348. }

  349. /**
  350. * 根据ID删除图片
  351. */
  352. function deleteImageFromDatabase(imageId) {
  353.     try {
  354.         var sql = "DELETE FROM images WHERE id = ?";
  355.         pstmt = conn.prepareStatement(sql);
  356.         pstmt.setInt(1, imageId);
  357.         
  358.         var rowsAffected = pstmt.executeUpdate();
  359.         pstmt.close();
  360.         pstmt = null;
  361.         
  362.         if (rowsAffected > 0) {
  363.             print.log("✅ 成功删除ID为 " + imageId + " 的图片,影响行数: " + rowsAffected);
  364.             return true;
  365.         } else {
  366.             print.log("❌ 未找到ID为 " + imageId + " 的图片");
  367.             return false;
  368.         }
  369.     } catch (e) {
  370.         print.log("❌ 删除图片失败: " + e.message);
  371.         if (pstmt) {
  372.             try { pstmt.close(); } catch(err) {}
  373.             pstmt = null;
  374.         }
  375.         return false;
  376.     }
  377. }

  378. /**
  379. * 实时截图并上传到数据库
  380. * @param {String} imageName - 图片名称(可选)
  381. * @returns {Boolean} 是否成功
  382. */
  383. function screenshotAndUpload(imageName) {
  384.     try {
  385.         print.log("\n===== 实时截图并上传 =====");
  386.         
  387.         // 1. 截图
  388.         print.log("正在截取屏幕...");
  389.         var screenshot = screen.screenShotFull();
  390.         
  391.         if (!screenshot) {
  392.             print.log("❌ 截图失败");
  393.             return false;
  394.         }
  395.         
  396.         print.log("✅ 截图成功");
  397.         
  398.         // 2. 生成本地保存路径
  399.         var timestamp = new java.util.Date().getTime();
  400.         var localPath = "/sdcard/screenshot_" + timestamp + ".jpg";
  401.         
  402.         // 3. 保存到本地
  403.         print.log("正在保存截图到本地: " + localPath);
  404.         screenshot.save(localPath);
  405.         
  406.         if (!fileExists(localPath)) {
  407.             print.log("❌ 本地保存失败");
  408.             return false;
  409.         }
  410.         
  411.         print.log("✅ 本地保存成功");
  412.         
  413.         // 4. 上传到数据库
  414.         var name = imageName || "截图_" + timestamp;
  415.         print.log("正在上传到数据库: " + name);
  416.         
  417.         var uploadResult = uploadImageToDatabase(localPath, name);
  418.         
  419.         if (uploadResult) {
  420.             print.log("✅ 实时截图上传成功!");
  421.             return true;
  422.         } else {
  423.             print.log("❌ 数据库上传失败,但本地图片已保存");
  424.             return false;
  425.         }
  426.     } catch (e) {
  427.         print.log("❌ 实时截图上传失败: " + e.message);
  428.         return false;
  429.     }
  430. }

  431. /**
  432. * 定时截图并上传(循环执行)
  433. * @param {Number} intervalSeconds - 间隔秒数
  434. * @param {Number} maxCount - 最大执行次数(0表示无限循环)
  435. */
  436. function autoScreenshotUpload(intervalSeconds, maxCount) {
  437.     try {
  438.         print.log("\n===== 启动定时截图上传 =====");
  439.         print.log("间隔: " + intervalSeconds + " 秒");
  440.         print.log("最大次数: " + (maxCount === 0 ? "无限" : maxCount));
  441.         
  442.         var count = 0;
  443.         
  444.         while (maxCount === 0 || count < maxCount) {
  445.             count++;
  446.             print.log("\n--- 第 " + count + " 次截图 ---");
  447.             
  448.             var result = screenshotAndUpload("定时截图_" + count);
  449.             
  450.             if (result) {
  451.                 print.log("✅ 第 " + count + " 次成功");
  452.             } else {
  453.                 print.log("❌ 第 " + count + " 次失败");
  454.             }
  455.             
  456.             // 等待间隔(不包括最后一次)
  457.             if (maxCount === 0 || count < maxCount) {
  458.                 print.log("等待 " + intervalSeconds + " 秒后进行下一次截图...");
  459.                 sleep(intervalSeconds * 1000);
  460.             }
  461.         }
  462.         
  463.         print.log("\n===== 定时截图任务完成 =====");
  464.         print.log("共执行 " + count + " 次截图上传");
  465.         return true;
  466.     } catch (e) {
  467.         print.log("❌ 定时截图任务失败: " + e.message);
  468.         return false;
  469.     }
  470. }

  471. /**
  472. * 截图并获取Base64数据(不上传,用于预览等)
  473. * @returns {String} Base64字符串,失败返回null
  474. */
  475. function screenshotToBase64() {
  476.     try {
  477.         print.log("\n===== 截图并获取Base64 =====");
  478.         
  479.         // 1. 截图
  480.         var screenshot = screen.screenShotFull();
  481.         if (!screenshot) {
  482.             print.log("❌ 截图失败");
  483.             return null;
  484.         }
  485.         
  486.         // 2. 转为Base64
  487.         var base64Data = screenshot.toBase64();
  488.         
  489.         if (base64Data) {
  490.             print.log("✅ Base64数据获取成功,长度: " + base64Data.length + " 字符");
  491.             print.log("  前缀: " + base64Data.substring(0, 50) + "...");
  492.             return base64Data;
  493.         } else {
  494.             print.log("❌ Base64转换失败");
  495.             return null;
  496.         }
  497.     } catch (e) {
  498.         print.log("❌ 截图转Base64失败: " + e.message);
  499.         return null;
  500.     }
  501. }

  502. /**
  503. * 关闭数据库连接
  504. */
  505. function closeConnection() {
  506.     try {
  507.         if (pstmt != null) {
  508.             pstmt.close();
  509.             pstmt = null;
  510.         }
  511.         if (conn != null) {
  512.             conn.close();
  513.         }
  514.         print.log("✅ 数据库连接已关闭");
  515.     } catch (e) {
  516.         print.log("❌ 关闭连接时出错: " + e.message);
  517.     }
  518. }

  519. // 主程序执行流程
  520. try {
  521.     // 1. 连接数据库
  522.     if (!connectDatabase()) {
  523.         throw new Error("数据库连接失败");
  524.     }
  525.    
  526.     // 2. 检查表是否存在,不存在则创建
  527.     if (!checkTableStructure()) {
  528.         print.log("正在创建图片存储表...");
  529.         if (!createImageTable()) {
  530.             throw new Error("创建图片表失败");
  531.         }
  532.     }
  533.    
  534.     // ========== 方式1:上传本地已有图片 ==========
  535.     print.log("\n===== 方式1:上传本地图片 =====");
  536.    
  537.     // 常见的手机图片路径示例
  538.     var sampleImagePaths = [
  539.         "/sdcard/DCIM/Camera/photo_001.jpg",
  540.         "/sdcard/Pictures/Screenshots/screenshot_001.png",
  541.         "/sdcard/Download/image_001.jpg"
  542.     ];
  543.    
  544.     // 使用第一个存在的图片路径
  545.     var uploadPath = null;
  546.     for (var i = 0; i < sampleImagePaths.length; i++) {
  547.         var testPath = sampleImagePaths[i];
  548.         if (new java.io.File(testPath).exists()) {
  549.             uploadPath = testPath;
  550.             print.log("找到可用的测试图片: " + uploadPath);
  551.             break;
  552.         }
  553.     }
  554.    
  555.     if (uploadPath) {
  556.         // 上传找到的图片
  557.         uploadImageToDatabase(uploadPath, "本地测试图片_" + new java.util.Date().getTime());
  558.     } else {
  559.         print.log("⚠️ 未找到测试图片,请确保以下路径有图片文件:");
  560.         for (var j = 0; j < sampleImagePaths.length; j++) {
  561.             print.log("  - " + sampleImagePaths[j]);
  562.         }
  563.     }
  564.    
  565.     // ========== 方式2:实时截图并上传 ==========
  566.     print.log("\n===== 方式2:实时截图并上传 =====");
  567.    
  568.     // 立即截图并上传
  569.     var screenshotResult = screenshotAndUpload("实时截图测试");
  570.    
  571.     // ========== 方式3:定时截图上传(可选) ==========
  572.     // 如果需要定时截图,请取消注释以下代码:
  573.     // autoScreenshotUpload(5, 3);  // 每5秒截图一次,共3次
  574.    
  575.     // 4. 查询所有图片
  576.     print.log("\n===== 查询数据库中的图片 =====");
  577.     queryAllImages();
  578.    
  579.     // 5. 下载最新图片
  580.     print.log("\n===== 从数据库下载最新图片 =====");
  581.     // 查找最新的图片ID
  582.     var latestImageId = 0;
  583.     try {
  584.         var sql = "SELECT MAX(id) as max_id FROM images";
  585.         var stmt = conn.createStatement();
  586.         var rs = stmt.executeQuery(sql);
  587.         if (rs.next()) {
  588.             latestImageId = rs.getInt("max_id");
  589.         }
  590.         rs.close();
  591.         stmt.close();
  592.         
  593.         if (latestImageId > 0) {
  594.             var downloadPath = "/sdcard/downloaded_image_" + latestImageId + ".jpg";
  595.             downloadImageFromDatabase(latestImageId, downloadPath);
  596.             
  597.             // 6. 截图转Base64演示
  598.             print.log("\n===== 截图转Base64演示 =====");
  599.             var base64Data = screenshotToBase64();
  600.             if (base64Data) {
  601.                 print.log("✅ Base64可用于H5界面显示、网络传输等");
  602.             }
  603.             
  604.             // 7. 删除图片演示(取消注释可删除)
  605.             // print.log("\n===== 删除图片演示 =====");
  606.             // deleteImageFromDatabase(latestImageId);
  607.             // print.log("已删除ID为 " + latestImageId + " 的图片");
  608.         }
  609.     } catch (e) {
  610.         print.log("⚠️ 演示下载功能时出错: " + e.message);
  611.     }
  612.    
  613.     // 8. 再次查询确认
  614.     print.log("\n===== 最终图片列表 =====");
  615.     queryAllImages();
  616.    
  617. } catch (e) {
  618.     print.log("❌ 程序执行过程中发生错误: " + e.message);
  619. } finally {
  620.     // 确保连接被关闭
  621.     closeConnection();
  622. }

  623. print.log("===== 数据库图片上传操作脚本结束 =====");

  624. /**
  625. * &#128161; 使用说明:
  626. *
  627. * 1. 图片存储原理:
  628. *    - 使用 MySQL 的 LONGBLOB 类型存储二进制图片数据
  629. *    - 将图片文件转为 Base64 字符串,再转为字节数组存入数据库
  630. *
  631. * 2. 上传流程:
  632. *    - file.fileToBase64(path) → 获取图片Base64字符串
  633. *    - android.util.Base64.decode() → Base64转字节数组
  634. *    - prepareStatement.setBytes() → 存入数据库
  635. *
  636. * 3. 下载流程:
  637. *    - rs.getBytes() → 从数据库读取字节数组
  638. *    - android.util.Base64.encodeToString() → 字节数组转Base64
  639. *    - file.base64ToFile() → 保存为图片文件
  640. *
  641. * 4. 适用场景:
  642. *    - 用户头像存储
  643. *    - 商品图片管理
  644. *    - 截图自动备份
  645. *    - 图片数据迁移
  646. */
复制代码








untoHID中文输入智能打字功能nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件&#127983;AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]
信息发布软件AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
信息发布软件AIWROK软件安卓随机工具应用函数生成
AIWROK软件安卓随机工具应用函数生成
信息发布软件用在AIWORK软件代码中的实用符号分类整理2
用在AIWORK软件代码中的实用符号分类整理2 软件IDE用Emoji符号分类整理(含用途说明)一、表情与情感1. 微笑 [*]😀 笑脸(基础开心反馈,用于操作成功后的友好提示) [*]😃 笑脸大眼睛(强化开心情绪,用于重要任务完成后的积极反馈) [*]😄 笑脸和微笑的眼睛(温和友好的状态,用于日常交互中的正向回应) [*]😁 带着微笑的眼睛(轻松愉悦的反馈,用于轻度成功或趣味操作) [*]
信息发布软件AIWROK软件图像二值化的各种方法和应用场景
AIWROK软件图像二值化的各种方法和应用场景
信息发布软件AIWROK软件找图区分页面变化和卡死状态
AIWROK软件找图区分页面变化和卡死状态
信息发布软件AIWROK苹果系统Map 数据管理[map]小结
AIWROK苹果系统Map 数据管理[map]小结 方法一:add(添加键值对)[/backcolor]方法二:delete(删除指定键值对)[/backcolor]方法三:clear(清空所有键值对)[/backcolor]方法四:get(根据键获取值)[/backcolor]方法五:getAllValue(获取所有值)[/backcolor]方法六:toString(转换为字符串)[/backcolor]完整示例:
信息发布软件AIWROK软件用图找图示例templateMat方法
AIWROK软件用图找图示例templateMat方法
信息发布软件苹果JS代码运行时[selfRunTime]小结
苹果JS代码运行时[selfRunTime]小结 方法一:stop 停止运行[/backcolor]方法二:runOnUIThread ui 线程中运行函数[/backcolor]
信息发布软件苹果系统专用H5创建一个绿色文件
苹果系统专用H5创建一个绿色文件
信息发布软件AIWROK软件技术分享苹果IOS系统获取外部IP
AIWROK软件技术分享苹果IOS系统获取外部IP
信息发布软件AIWROK软件安卓总结图像视觉处理[opencv]方法
AIWROK软件安卓总结图像视觉处理[opencv]方法 方法1:getcolorNum:获取区域颜色数量 方法2:gradientProcessing:计算梯度 方法3:invertColor:颜色翻转 方法4:openImg:开运算 方法5:removeSmallObjects:去杂点 方法7:shapeSplit:分隔提取 方法8:shapeSplitEx:cv 文件分隔提取 方法9:templateMatch:模板匹配 方法10:threshold:二值化 方法11:toGray:转灰度图 方法12:
信息发布软件AIWROK软件start.js简单H5直接调用
信息发布软件AIWROK苹果系统简单的UI界面分享一下
信息发布软件图像视觉处理[opencv]小结3
图像视觉处理[opencv]小结3 方法1:findImageOneSift:找图(SIFT 算法) 方法2:findImagesEx:cv 文件找图 方法3:findMultiColor:找色 方法4:findMultiColorEx:cv 文件多点找色 方法5:gaussianBlur:高斯滤波 方法6:getAllShap:获取所有 Shape 方法7:getContours:获取轮廓图
信息发布软件AIWROK软件图像视觉处理[opencv]小结2
AIWROK软件图像视觉处理[opencv]小结2 方法 1:coverageArea:图片抹除方法2:dilateImage:图像膨胀 方法3:drawRect:Shape 绘制 方法4:erodeImage:图像腐蚀 方法5:filtersEx:cv 文件滤镜 方法6:findImageOneKAZE:找图(KAZE 算法)
信息发布软件AIWORK软件图像视觉处理[opencv]小结1
AIWORK软件图像视觉处理[opencv]小结1// 1. HSV颜色变换:对图像进行HSV通道的颜色变换,可调整色相、饱和度、对比度// 参数说明:输入图像(Mat)、色相参数(int)、饱和度参数(int)、对比度参数(int)// 返回值:处理后的Mat图像function hsvTransform() { // 截取屏幕区域(432,768)大小、100质量的图像并转为Mat格式 var mat = screen.screenShot(432, 768, 100).getMat(); // 调用HSV变换:色相17、饱和度17、对比度17
信息发布软件浏览器H5方法小结
浏览器H5方法小结
信息发布软件AIWROK软件漂亮对接H5简单示例
AIWROK软件漂亮对接H5简单示例
信息发布软件AIWROK软件线程优先级示例
AIWROK软件线程优先级示例
信息发布软件AIWORK软件在屏幕底部显示实时日志可以移动
AIWORK软件在屏幕底部显示实时日志可以移动
信息发布软件安卓HID贝塞尔曲线手势操作示例
安卓HID贝塞尔曲线手势操作示例
信息发布软件安卓端与H5页面交互的完整实现
安卓端与H5页面交互的完整实现
信息发布软件苹果系统里如何使用OCR进行文本识别并执行点击操作
苹果系统里如何使用OCR进行文本识别并执行点击操作
信息发布软件AIWROK软件列表控件 [uiList] 实例演示
AIWROK软件列表控件 实例演示
信息发布软件安卓列表控件 [uiList] 方法小结
安卓列表控件 方法小结 方法 1:add方法 2:addArray方法 3:clear方法 4:delete方法 5:execSQL方法 6:exportData方法 7:exportTxt方法 8:findByID方法 9:getColumnCount方法 10:getColumnIndex方法 11:getColumnName方法 12:getColumnNames方法 13:getCount方法 14:getCursorSetp方法 15:getPosition方法 16:getString方法 17:getStringl方法 18:importData方法 19:isLast方法 20:move方法 21:moveNext方法
信息发布软件安卓版AIWROK软件APP操作类小结合集
安卓版AIWROK软件APP操作类小结合集 方法 1:代理模式获取当前 activity 地址[/backcolor]方法 2:getAllApp 获取所有 app[/backcolor]方法 3:getAppName 获取 APP 名字[/backcolor]方法 4:getCurrentActivity 无障碍获取当前 activity 地址[/backcolor]方法 5:getLocalAppName 获取自己 APP 名字(AIWORK 打包)[/backcolor]方法 6:getLocalVerName 获取自己版本号(AIWORK 打包)[/backcolor]方法 7:getMemory
信息发布软件AIWROK软件苹果点击开始按钮运行最简单的封装脚本例子
AIWROK软件苹果点击开始按钮运行最简单的封装脚本例子 另外主脚本.js封装的:
信息发布软件安卓toast吐司的各种方法应用实例
安卓toast吐司的各种方法应用实例
信息发布软件AIWROK软件支持悬浮窗自由定位和拖拽功能
AIWROK软件支持悬浮窗自由定位和拖拽功能
信息发布软件AIWROK软件安卓工具箱悬浮窗
AIWROK软件安卓工具箱悬浮窗
信息发布软件安卓通过floatUI创建悬浮窗H5界面
安卓通过floatUI创建悬浮窗H5界面

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2025-12-29 11:45 , Processed in 0.382909 second(s), 49 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

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