【Java后端】读取文件夹中的图片转成base64编码并写入properties文件
如图所示,图片放在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文件相关推荐
- base64转html文件,图片转换成Base64编码集成到html文件
首先为什么要这么做? 原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...
- 将一个文件夹中的图片写成视频
import numpy as np import cv2 #读取一张图片 size = (1280,720) print(size) #完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参 ...
- 根据文件夹中的图片数据集生成.txt文件标签
文章目录 前言 数据集格式 Python实现 注意事项 前言 深度学习中的与图片有关的任务,如图像识别,图像分类,目标检测,图像分割等,在准备图片数据集时,图片的序号和标签往往是由.txt文件获取的. ...
- matlab读取一个文件的图片大小,Matlab读取文件夹中子文件夹中的图片并修改尺寸...
今天被师兄问到如何利用matlab批处理图片,觉得很简单嘛 就让他去百度 结果只百度到处理文件夹中图片的程序 好吧 这里放上如何处理文件夹中子文件夹的图片 现状:在一个名为casia的文件夹中,里面有 ...
- 使用Python读取文件夹中的图片
文章目录 Python创建新的文件夹 Python读取文件夹中的图片内容以及存取 一个文件夹中含有大量的图片文件,jpg格式和png格式的.需要从中选出一些比较适合电脑分辨率的,也就是宽度大于高度 ...
- java判断文件夹中的图片是否重复
java判断文件夹中的图片是否重复 直接上代码 package com.example.common; import java.io.File; import java.io.FileInputStr ...
- python 按照顺序读取文件夹中的图片名称
前言: 在ubuntu16.04系统中,读取图像名称的时候,往往会出现乱序的现象,比如: 1,2,3,4,5,6,7,8,9,10 可能会被提取到的顺序为: 1,10,2,3,4,5,6,7,8,9 ...
- 如何批量导入不同文件夹中的图片
在标签设计印刷工作中,批量导入图片已经是非常普遍的功能了.不论图片名称是否有规律或者是否有在数据库中保存,经过一些专业的设置都可以实现批量导入.那么如果是不同文件夹中的图片该如何导入呢? 文件夹中图片 ...
- win7文件夹中的图片使用“XX图标”查看模式显示时,无法正常显示图片缩略图
win7文件夹中的图片使用"XX图标"查看模式显示时,无法正常显示图片缩略图 系统: win7 详细症状描述: 进入含有图片的文件夹,选择"查看"菜单栏中的&q ...
最新文章
- scala while循环中断
- OSChina 周日乱弹 —— 表白的终极境界!
- 直接拿来用!最火的Android开源项目(一)
- win2008 mysql_mysql5.7.17在win2008R2的64位系统安装与配置实例
- Linux使用技巧9--用dpkg管理你的软件
- JAVAWEB项目如何实现验证码
- 支持pygame的python有哪些版本_完整构建文件支持PYGAME
- python正则表达式之match,search,findall区别
- 容器的六大误区和八大正确场景(颠覆你的认知)
- 德银病危:心比天高,却落下黄粱一梦
- 如何将eclipse的英文设置成中文?
- H3C交换机常用配置命令大全
- css标题样式_CSS的标题集样式
- linux文件夹压缩与分卷压缩
- 闲聊历史上的配角之赵高
- 4k纸是几厘米乘几厘米_4K纸是多少尺寸
- CF1427E Xum
- 硬件设计23之三极管开关原理与场效应管开关原理
- 【源码】广义逻辑分布(GLO)库
- java数字格式化为货币字符串_Java把数字格式化为货币字符串实例代码