如图所示,图片放在maven项目的src/test/resources/img/目录下面,main方法、工具类等在generator/目录下,生成的properties文件在src/main/resources/properties/目录下面。

Main方法

import java.util.ArrayList;
import java.util.Base64;
import java.util.List;public class PicBase64Generator {// 项目在硬盘上的基础路径private static final String PROJECT_PATH = System.getProperty("user.dir");// 资源文件路径private static final String RESOURCES_PATH = "/src/main/resources";// 图片Base64字符串解析头begin部分private static final String HEAD_BEGIN = "data:image/";// 图片Base64字符串解析头end部分private static final String HEAD_END = ";base64,";public static void main(String[] args) {Base64.Encoder encoder = Base64.getEncoder();Utils utils = new Utils();String filePath = PROJECT_PATH + RESOURCES_PATH + "/properties/vehicle-base64.properties"; // 定义配置文件存放路径String picDir = "/img/vehicle/";  // 图片存放相对路径// 获取文件夹下所有图片名称String[] picName = utils.getFileNames(picDir); if (utils.createFile(filePath)) {  // 生成properties配置文件List<String> data = new ArrayList<>();for (String pic : picName) {  // 遍历图片byte[] bytes = utils.getFile(picDir + pic);if (bytes == null) {data.add(pic.split("\\.")[0] + "=" + "" + "\r\n"); // 构造配置文件内容形如:"bmw="} else {String encodedText = encoder.encodeToString(bytes);  // 转换图片为base64编码String[] array = pic.split("\\.");// 构造配置文件内容形如:"bmw=data:image/png;base64,xxxxx.."data.add(array[0] + "=" + HEAD_BEGIN + array[1] + HEAD_END + encodedText + "\r\n");}}// 将内容写入配置文件utils.writeFileContent(filePath, data);}}
}

Utils 工具类

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;public class Utils {/*** 日志对象*/private static final Logger LOGGER = LoggerFactory.getLogger(Utils.class);/*** 获取目录下文件名列表* @param path 文件目录* @return 文件名列表*/public String [] getFileNames(String path){File file = new File(this.getClass().getResource(path).getPath());return file.list();}/*** 获取文件字节数据* @param filePath 文件路径,示例:/img/vehicle/190.png* @return 文件字节数据*/public byte[] getFile(String filePath) {File f;try {f = new File(this.getClass().getResource(filePath).getPath());} catch (Exception e) {LOGGER.error(Constant.LOG_FOMAT_TYPE_TWO,ErrorCode.FILE_LOAD_ERROR.getErrorCode(),ErrorCode.FILE_LOAD_ERROR.getMessage(),e.getMessage());return null;}LOGGER.info("file path: " + f.getAbsolutePath());Path path = Paths.get(f.getAbsolutePath());byte[] data;try {data = Files.readAllBytes(path);} catch (IOException e) {LOGGER.error(Constant.LOG_FOMAT_TYPE_TWO,ErrorCode.FILE_LOAD_ERROR.getErrorCode(),ErrorCode.FILE_LOAD_ERROR.getMessage(),e.getMessage());return null;}return data;}/*** 创建文件* @param fileName 文件路径* @return true or false*/public boolean createFile(String fileName){boolean bool = false;File file = new File(fileName);try {if (file.exists()) {file.delete();bool = file.createNewFile();} else {bool = file.createNewFile();}} catch (Exception e) {LOGGER.error(Constant.LOG_FOMAT_TYPE_TWO,ErrorCode.CREATE_FILE_FAILED.getErrorCode(),ErrorCode.CREATE_FILE_FAILED.getMessage(),e.getMessage());}return bool;}/*** 写入数据到新文件* @param filepath 文件路径,包括文件名* @param data 写入数据*/public void writeFileContent(String filepath, List<String> data){try (FileOutputStream fos = new FileOutputStream(new File(filepath));PrintWriter pw = new PrintWriter(fos)) {for (String newStr : data) {pw.write(newStr.toCharArray());pw.flush();}} catch (Exception e) {LOGGER.error(Constant.LOG_FOMAT_TYPE_TWO,ErrorCode.FILE_WRITE_FAILED.getErrorCode(),ErrorCode.FILE_WRITE_FAILED.getMessage(),e.getMessage());}}
}

Properties工具类

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;public class PropertiesUtil {/*** 日志对象*/private static final Logger LOGGER = LoggerFactory.getLogger(PropertiesUtil.class);/*** 获取Properties对象* @param filePath 文件路径,示例:/properties/vehicle-base64.properties* @return Properties对象*/public Properties getProperties(String filePath) {InputStream in = this.getClass().getResourceAsStream(filePath);Properties properties = new Properties();try {properties.load(in);} catch (IOException e) {LOGGER.error("[error code]{} - [msg]{}",ErrorCode.FILE_LOAD_ERROR.getErrorCode(),e.getMessage());throw BaseException.of(ErrorCode.FILE_LOAD_ERROR.of());}return properties;}
}

获取Poperties文件内容

PropertiesUtil propertiesUtil = new PropertiesUtil();
Properties properties = propertiesUtil.getProperties("/properties/vehicle-base64.properties");
String str = properties.getProperty(“bmw”);

【Java后端】读取文件夹中的图片转成base64编码并写入properties文件相关推荐

  1. base64转html文件,图片转换成Base64编码集成到html文件

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

  2. 将一个文件夹中的图片写成视频

    import numpy as np import cv2 #读取一张图片 size = (1280,720) print(size) #完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参 ...

  3. 根据文件夹中的图片数据集生成.txt文件标签

    文章目录 前言 数据集格式 Python实现 注意事项 前言 深度学习中的与图片有关的任务,如图像识别,图像分类,目标检测,图像分割等,在准备图片数据集时,图片的序号和标签往往是由.txt文件获取的. ...

  4. matlab读取一个文件的图片大小,Matlab读取文件夹中子文件夹中的图片并修改尺寸...

    今天被师兄问到如何利用matlab批处理图片,觉得很简单嘛 就让他去百度 结果只百度到处理文件夹中图片的程序 好吧 这里放上如何处理文件夹中子文件夹的图片 现状:在一个名为casia的文件夹中,里面有 ...

  5. 使用Python读取文件夹中的图片

    文章目录 Python创建新的文件夹 Python读取文件夹中的图片内容以及存取   一个文件夹中含有大量的图片文件,jpg格式和png格式的.需要从中选出一些比较适合电脑分辨率的,也就是宽度大于高度 ...

  6. java判断文件夹中的图片是否重复

    java判断文件夹中的图片是否重复 直接上代码 package com.example.common; import java.io.File; import java.io.FileInputStr ...

  7. python 按照顺序读取文件夹中的图片名称

    前言: 在ubuntu16.04系统中,读取图像名称的时候,往往会出现乱序的现象,比如: 1,2,3,4,5,6,7,8,9,10 可能会被提取到的顺序为: 1,10,2,3,4,5,6,7,8,9 ...

  8. 如何批量导入不同文件夹中的图片

    在标签设计印刷工作中,批量导入图片已经是非常普遍的功能了.不论图片名称是否有规律或者是否有在数据库中保存,经过一些专业的设置都可以实现批量导入.那么如果是不同文件夹中的图片该如何导入呢? 文件夹中图片 ...

  9. win7文件夹中的图片使用“XX图标”查看模式显示时,无法正常显示图片缩略图

    win7文件夹中的图片使用"XX图标"查看模式显示时,无法正常显示图片缩略图 系统: win7 详细症状描述: 进入含有图片的文件夹,选择"查看"菜单栏中的&q ...

最新文章

  1. scala while循环中断
  2. OSChina 周日乱弹 —— 表白的终极境界!
  3. 直接拿来用!最火的Android开源项目(一)
  4. win2008 mysql_mysql5.7.17在win2008R2的64位系统安装与配置实例
  5. Linux使用技巧9--用dpkg管理你的软件
  6. JAVAWEB项目如何实现验证码
  7. 支持pygame的python有哪些版本_完整构建文件支持PYGAME
  8. python正则表达式之match,search,findall区别
  9. 容器的六大误区和八大正确场景(颠覆你的认知)
  10. 德银病危:心比天高,却落下黄粱一梦
  11. 如何将eclipse的英文设置成中文?
  12. H3C交换机常用配置命令大全
  13. css标题样式_CSS的标题集样式
  14. linux文件夹压缩与分卷压缩
  15. 闲聊历史上的配角之赵高
  16. 4k纸是几厘米乘几厘米_4K纸是多少尺寸
  17. CF1427E Xum
  18. 硬件设计23之三极管开关原理与场效应管开关原理
  19. 【源码】广义逻辑分布(GLO)库
  20. java数字格式化为货币字符串_Java把数字格式化为货币字符串实例代码

热门文章

  1. 漫谈程序员系列:任性,春节前辞职
  2. 怎么做一个物流公司网站
  3. PCB散热之过孔的作用
  4. 表单提交 参数为中文时乱码解决办法
  5. 清博舆情系统_什么是舆情
  6. vue入门(二)---vue实例
  7. 图片在盒子内等比展示不变形
  8. VB源码之友终于开发完毕了
  9. iOS 优化资源文件
  10. 极光推送:后台向APP:android,ios极光推送消息