2021SC@SDUSC-multimedia-utils-一款java后端的图片、视频处理工具jar包-功能介绍1

通京
2023-12-01

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档



前言使用(部分)

在上篇文章中我们对视频的使用部分进行了获取视频信息以及生成视频封面图实现的讲解,下面我将继续介绍其他功能的实现。


提示:以下是本篇文章正文内容,下面案例可供参考

一、压缩视频

此部分与前面功能实现类似,均需要先生成上传视频的临时文件,然后再调用视频处理工具类。但是之后的工作我们需要注意,我们要设置视频压缩完成时的回调URL定位。然后设置好视频压缩具体参数。最后再删除临时文件。具体设置视频参数方法在后期会讲解。

  /**
     * 压缩视频
     */
    @PostMapping("/compressionVideo")
    public Object compressionVideo(@RequestParam MultipartFile file) {
 
        String location = multipartProperties.getLocation();
 
        // 生成上传视频的临时文件
        File inputFile = FileUtil.multipartFile2File(file, location);
 
        // 调用视频处理工具类
 
 
        CompressionAttributes compressionAttributes = new CompressionAttributes();
        // 设置视频压缩完成时的回调URL
        compressionAttributes.setProgressUrl("http://localhost:8999/file/callback?fileId=111111&a=456");
 
        // 设置视频压缩参数
        VideoAttributes videoAttributes = new VideoAttributes();
        videoAttributes.setMaxDuration(15);
        videoAttributes.setMaxFps(20);
        videoAttributes.setVideoSize(VideoSize.HD480);
 
        compressionAttributes.setVideoAttributes(videoAttributes);
 
        String outputFileName = fFmpegUtils.putCompressionTask(location, inputFile.getName(), compressionAttributes);
 
        return outputFileName;
    }


二、使用步骤压缩视频完成时的回调

这里主要是针对上述要求,提取回调信息,回调参数 fileId,根据fileId查询数据库的上传临时文件名和下载临时文件名,进行文件上传和文件删除。

@PostMapping("/callback")
    public Object callback(@RequestBody String info, @RequestParam("fileId") String fileId, @RequestParam("a") String a) {
 
        String[] split = info.split("/");
 
        System.out.println(String.format("fileId为%s的文件已压缩完成", fileId));
 
        return null;
    }


三、图片裁切

对于图片的处理和对视频的处理相似,都是先生成上传的临时文件然后再调用相应的图片处理工具类,裁切图片,最后删除上传图片的临时文件即可。代码如下

@PostMapping("/crop")
    public Object crop(@RequestParam MultipartFile file) {
 
        String location = multipartProperties.getLocation();
 
        // 生成上传图片的临时文件
        File inputFile = FileUtil.multipartFile2File(file, location);
 
        // 调用图片处理工具类
        // 裁切成3000x1200的图后,修改分辨率为宽800的图(高度按比例缩小)
        CropAttributes cropAttributes = new CropAttributes(3000, 1200, 1000, 500);
        ResizeAttributes resizeAttributes = new ResizeAttributes(800, null);
        String outputFileName = imageMagickUtils.cropAndResize(location, inputFile.getName(), cropAttributes, resizeAttributes);
 
        // 删除上传图片的临时文件
        inputFile.delete();
        return outputFileName;
    }

四、图片分辨率修改代码如下(已给出对应注释)

/**
     * 图片分辨率修改
     */
    @PostMapping("/resize")
    public Object resize(@RequestParam MultipartFile file) {
 
        String location = multipartProperties.getLocation();
 
        // 生成上传图片的临时文件
        File inputFile = FileUtil.multipartFile2File(file, location);
 
        // 调用图片处理工具类
        ResizeAttributes resizeAttributes = new ResizeAttributes(800, null);
        String outputFileName = imageMagickUtils.resize(location, inputFile.getName(), resizeAttributes, Suffix.JPG);
 
        // 删除上传图片的临时文件
        inputFile.delete();
        return outputFileName;
    }
 
}


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法

 类似资料: