Demo:第二章:Java实现随机图像生成(人像,汽车,房屋等等)

https://avatars.dicebear.com/api/gridy/二.svg

在这里插入图片描述

https://avatars.dicebear.com/api/human/三.svg

在这里插入图片描述

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(“====&#

  • 30
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值