喵星之旅-狂奔的兔子-java实现富文本base64图片转url存储

1.获取富文本信息

正常情况富文本信息是直接有的,如果是存储在文件中处理的话可以参考如下处理。其中文件是文本文件”f:\test.txt”,获得富文本信息sb。

1
2
3
4
5
6
7
8
FileReader fr = new FileReader("f:\\test.txt");
BufferedReader br=new BufferedReader(fr);

StringBuilder sb = new StringBuilder();
String line = "";
while ((line = br.readLine()) != null) {
sb.append(line);
}

2.截取图片标签内容

sb是StringBuilder类型的富文本信息,sb1是包含头部信息的base64,如果要文件内容应该去掉前面部分sb1.substring(23),这里处理的头部信息是”data:image/jpeg;base64,”,如果还有其他的根据情况处理。

1
2
3
4
5
6
7
for (int i = sb.indexOf("data:image/jpeg;base64,"); i >= 0;  i = sb.indexOf("data:image/jpeg;base64,",i + 1)) {
int j = sb.indexOf("\"", i);
StringBuilder sb1 = new StringBuilder(sb.substring(i, j));
......
......

}

3.base64解码存储文件

f是文件路径,包含文件名,sb1是包含头部的base64内容。

1
2
3
4
String f = "f:\\hehe"+ Math.random() +".jpeg";
Files.write(Paths.get(f), Base64.decode(sb1.substring(23)), StandardOpenOption.CREATE);


4.重写图片src

f是文件路径,包含文件名,如果是最终处理结果,应当处理为网络地址,这里是本地地址,根据程序的情况添加前缀。

1
sb.replace(i, j, f);

5.相对完整代码

其中f的值和最后替换的值根据程序情况处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
   public static void main(String[] args) throws Exception {

FileReader fr = new FileReader("f:\\test.txt");
BufferedReader br=new BufferedReader(fr);

StringBuilder sb = new StringBuilder();
String line = "";
while ((line = br.readLine()) != null) {
sb.append(line);
}
//处理图片 'data:image/jpeg;base64,' 结束是英文双引号
//<p><img src="data:image/jpeg;base64,
//查找开始,查找结束,
for (int i = sb.indexOf("data:image/jpeg;base64,"); i >= 0; i = sb.indexOf("data:image/jpeg;base64,",i + 1)) {
int j = sb.indexOf("\"", i);

StringBuilder sb1 = new StringBuilder(sb.substring(i, j));
// 生成文件,获得地址
String f = "f:\\hehe"+ Math.random() +".jpeg";
Files.write(Paths.get(f), Base64.decode(sb1.substring(23)), StandardOpenOption.CREATE);

sb.replace(i, j, f);

}
System.out.println(sb.toString());
}
文章目录
  1. 1.获取富文本信息
  2. 2.截取图片标签内容
  3. 3.base64解码存储文件
  4. 4.重写图片src
  5. 5.相对完整代码
|