https://avatars.dicebear.com/api/jdenticon/jeden.svg
当然还可以控制头像的一些属性,比如发型,肤色,鼻子,嘴巴等
具体可以参考:https://avatars.dicebear.com/styles/avataaars
具体运用到实战:
首先是需要调这个第三方的api接口,它会返回给你一串字符串,我们拿到字符串,写入文件,注意后缀要以.svg结尾,否则这个图片无法查看。(一般区块链的图片,上链的大多都是svg文件)
然后我们需要将这个图片给前端展示,这里就需要将svg转成jpg(苹果前端和苹果前端也是可以处理的,不过比较麻烦,这里就需要我们处理一下)。
接着将图片转成jpg之后,还需要将它上传到图片存储服务器上,这里我以AWS的S3为例。
最后jpg图片上传成功以后,需要清理之前在服务器上生成的svg和jpg文件。
/**
-
@Description newsContentPicture为需要生成图片的内容
-
@Author zhiwei Liao
-
@Date 2021/9/14 16:28
**/
@Override
public String uploadNewsContentPictureS3(String newsContentPicture) throws Exception{
String osName = System.getProperties().getProperty(“os.name”);
String svgPath = null;
String jpgPath = null;
URL url = null;
log.info(“========操作系统:” + osName);
String fileName = String.valueOf(System.currentTimeMillis());
if(osName.contains(“Linux”)){
svgPath = linuxSvgPath + fileName + “.svg”;
jpgPath = linuxJpgPath + fileName + “.jpg”;
}else if(osName.contains(“Windows”)){
svgPath = System.getProperty(“user.dir”) + “\svg\” + fileName + “.svg”;
jpgPath = System.getProperty(“user.dir”) + “\jpg\” + fileName + “.jpg”;
}
//新闻图片内容转svg
File svgFile = readIoStringToFile(newsContentPicture, svgPath);
if(svgFile != null){
//svg文件转jpg
File jpgFile = SVGConverterUtils.svgFileChangeJpg(svgFile, jpgPath);
if(jpgFile != null){
//上传jpg图片到s3
AWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion(clientRegion)
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();
PutObjectRequest request = new PutObjectRequest(bucketName, fileName, jpgFile);
ObjectMetadata metadata = new ObjectMetadata();
metadata.addUserMetadata(“x-amz-meta-title”, “someTitle”);
request.setMetadata(metadata);
request.setKey(fileName);
s3Client.putObject(request);
url = s3Client.getUrl(bucketName, fileName);
if (svgFile.exists()) {
svgFile.delete();
}
if (jpgFile.exists()) {
jpgFile.delete();
}
}
}
return url.toString();
}
/**
-
把IO字符串输出到文件
-
@param ioString
-
@param filePath
*/
public static File readIoStringToFile(String ioString, String filePath) {
log.info(“====