|
|
@@ -10,7 +10,9 @@ import java.awt.geom.RoundRectangle2D;
|
|
|
import java.awt.image.BufferedImage;
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
import java.io.IOException;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Random;
|
|
|
+import java.util.WeakHashMap;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
@@ -22,6 +24,7 @@ import java.util.regex.Pattern;
|
|
|
*/
|
|
|
|
|
|
public class AvatarUtil {
|
|
|
+ private volatile static Map<String, String> avatarMap=new WeakHashMap<>();
|
|
|
/**
|
|
|
* 圆角大小
|
|
|
*/
|
|
|
@@ -35,15 +38,20 @@ public class AvatarUtil {
|
|
|
* @return 头像的base64存储
|
|
|
*/
|
|
|
public static String generateAvatar(String name){
|
|
|
- if(StrUtil.isBlank(name)){
|
|
|
- name="匿名";
|
|
|
+ String key=new String(StrUtil.trim(name));;
|
|
|
+ String result = avatarMap.get(key);
|
|
|
+ if(StrUtil.isNotBlank(result)){
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ if(StrUtil.isBlank(key)){
|
|
|
+ key="匿名";
|
|
|
}
|
|
|
int width = 100;
|
|
|
int height = 100;
|
|
|
- int nameLen = name.length();
|
|
|
+// int nameLen = name.length();
|
|
|
+
|
|
|
|
|
|
- name=StrUtil.trim(name);
|
|
|
- String nameWritten=StrUtil.sub(name,0,1);
|
|
|
+ String nameWritten=StrUtil.sub(key,0,1);
|
|
|
// // 如果用户输入的姓名少于等于2个字符,不用截取
|
|
|
// if (nameLen == 1) {
|
|
|
// nameWritten = name;
|
|
|
@@ -116,11 +124,12 @@ public class AvatarUtil {
|
|
|
ImageIO.write(rounded, "png", outputStream);
|
|
|
byte[] bytes = outputStream.toByteArray();
|
|
|
IoUtil.close(outputStream);
|
|
|
- return Base64Utils.encodeToString(bytes);
|
|
|
+ result= Base64Utils.encodeToString(bytes);
|
|
|
}catch (Exception e){
|
|
|
- return "";
|
|
|
+ result="";
|
|
|
}
|
|
|
-
|
|
|
+ avatarMap.put(key,result);
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -173,9 +182,4 @@ public class AvatarUtil {
|
|
|
g2.dispose();
|
|
|
return output;
|
|
|
}
|
|
|
-
|
|
|
- public static void main(String[] args) {
|
|
|
- System.out.println(generateAvatar("测试1"));
|
|
|
- }
|
|
|
-
|
|
|
}
|