上一篇文章说了一下文件上传至oss:https://blog.youkuaiyun.com/new_programmer_h/article/details/84307005
这里说一下上传后的一些后续操作:常用的获取图片缩率图、获取视频截帧生成封面图。自我感觉阿里oss对于这些处理封装的很好,只要根据:"%s|sys/saveas,o_%s,b_%s" 格式设置想要处理的方式他就会针对视频或者图片进行处理。
private static String endpoint = "http://oss-cn-beijing.aliyuncs.com";
private static String accessKeyId = "<yourAccessKeyId>";
private static String accessKeySecret = "<yourAccessKeySecret>";
private static String bucketName = "<yourBucketName>";
图片上传至oss后获取缩率图工具类:
/**
* 图片处理:生成缩率图
*
* @author LH_Yu
* @Param uploadFile 上传文件
* @Param picturePath 原图key
* @Param thumbPath 缩率图上传路径及取出url的key
* "%s|sys/saveas,o_%s,b_%s" 具体处理格式化
*/
public static String compressPicture(MultipartFile uploadFile, String picturePath, String thumbPath) throws Exception {
// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 图片处理持久化 : 缩放
StringBuilder sbStyle = new StringBuilder();
Formatter styleFormatter = new Formatter(sbStyle);
//设置图片
String styleType = "image/resize,m_lfit,w_400,h_400"; //图片设置
String targetImage = thumbPath + uploadFile.getOriginalFilename();
styleFormatter.format("%s|sys/saveas,o_%s,b_%s", styleType,
BinaryUtil.toBase64String(targetImage.getBytes()),
BinaryUtil.toBase64String(bucketName.getBytes()));
ProcessObjectRequest request = new ProcessObjectRequest(bucketName, picturePath + uploadFile.getOriginalFilename(), sbStyle.toString());
GenericResult processResult = ossClient.processObject(request);
processResult.getResponse().getContent().close();
//设置过期时间 -- 十年
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
String url = ossClient.generatePresignedUrl(bucketName, thumbPath + uploadFile.getOriginalFilename(), expiration).toString();
return url;
}
视频上传至oss后截帧获取视频封面图工具类:
/**
* 视频处理:视频截帧生成封面图
*
* @author LH_Yu
* @Param uploadFile 上传文件
* @Param videoPath 原视频key
* @Param coverPicturePath 封面图上传路径及取出url的key
* "%s|sys/saveas,o_%s,b_%s" 具体处理格式化
*/
public static String coverPicture(MultipartFile uploadFile, String videoPath, String coverPicturePath) throws Exception {
// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 图片处理持久化 : 截帧生成封面图
StringBuilder sbStyle = new StringBuilder();
Formatter styleFormatter = new Formatter(sbStyle);
//设置图片处理
String styleType = "video/snapshot,t_3000,f_jpg,w_800,h_0,m_fast";//视频处理
String targetImage = coverPicturePath + uploadFile.getOriginalFilename();
styleFormatter.format("%s|sys/saveas,o_%s,b_%s", styleType,
BinaryUtil.toBase64String(targetImage.getBytes()),
BinaryUtil.toBase64String(bucketName.getBytes()));
ProcessObjectRequest request = new ProcessObjectRequest(bucketNamePrivate, videoPath + uploadFile.getOriginalFilename(), sbStyle.toString());
GenericResult processResult = ossClient.processObject(request);
processResult.getResponse().getContent().close();
//设置过期时间 -- 十年
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
String url = ossClient.generatePresignedUrl(bucketName, coverPicturePath + uploadFile.getOriginalFilename(), expiration).toString();
return url;
}