文件上传至oss后,获取图片缩率图、获取视频截帧等后续操作

上一篇文章说了一下文件上传至oss:https://blog.csdn.net/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;
    }

猜你喜欢

转载自www.cnblogs.com/LH--Yu/p/9995462.html