public class FileUtil {    @Value("${img.url}")    public String imgUrl;    @Value("${video.url}")    public String videoUrl;

    /**     * 保存图片     * @param files 图片流     * @return     */    public String saveImg(MultipartFile[] files) {        StringBuilder builder = new StringBuilder();        for (MultipartFile file : files) {            //获取文件名称            String fileName = file.getOriginalFilename();            //生成新文件名称            String newFileName = UUID.randomUUID() + fileName.substring(fileName.indexOf("."));            File startUrl = new File(imgUrl);            //创建文件夹            if (!startUrl.exists()) {                startUrl.mkdirs();            }            //生成文件            File fileSave = new File(imgUrl + newFileName);            //保存文件            try {                file.transferTo(fileSave);                builder.append("," + newFileName);            } catch (IOException e) {                e.printStackTrace();                return "error";            }        }        return builder.toString();    }

    /**     * 保存视频     * @param file 视频流     * @return     */    public String saveVideo(MultipartFile file) {        //获取文件名称        String fileName = file.getOriginalFilename();        //生成新文件名称        String newFileName = UUID.randomUUID() + fileName.substring(fileName.indexOf("."));        File startUrl = new File(videoUrl);        //创建文件夹        if (!startUrl.exists()) {            startUrl.mkdirs();        }        //生成文件        File fileSave = new File(videoUrl + newFileName);        //保存文件        try {            file.transferTo(fileSave);        } catch (IOException e) {            e.printStackTrace();            return "error";        }        return newFileName;    }

    /**     * 删除视频     * @param name     * @return     */    public void deletFile(String name) {        File file = new File(videoUrl + name);        if (file.exists()) {            file.delete();        }    }

    /**     * 删除图片     * @param name     * @return     */    public void deletFiles(String name) {        File file = new File(imgUrl + name);        if (file.exists()) {            file.delete();        }    }

    /**     * 截取视频的帧,形成视频的预览图片     *     * @param videoName 视频名     */    public String cutPhotoFromVedio(String videoName) {        FFmpegFrameGrabber ff = null;        String videoPath = videoUrl + videoName;        String imgPath = videoUrl + videoName.substring(0, videoName.lastIndexOf(".")) + ".jpg";        String newImgName = videoName.substring(0, videoName.lastIndexOf(".")) + ".jpg";        File targetFile = new File(imgPath);        try {            ff = new FFmpegFrameGrabber(videoPath);            ff.start();            int lenght = ff.getLengthInFrames();            int i = 0;            Frame f = null;            while (i < lenght) {                // 过滤前5帧,避免出现全黑的图片,依自己情况而定                f = ff.grabFrame();                if ((i > 5) && (f.image != null)) {                    break;                }                i++;            }            opencv_core.IplImage img = f.image;            int owidth = img.width();            int oheight = img.height();            // 对截取的帧进行等比例缩放            int width = 800;            int height = (int) (((double) width / owidth) * oheight);            BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);            bi.getGraphics().drawImage(f.image.getBufferedImage().getScaledInstance(width, height, Image.SCALE_SMOOTH),                    0, 0, null);            ImageIO.write(bi, "jpg", targetFile);        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                if (ff != null) {                    ff.stop();                }            } catch (FrameGrabber.Exception e) {                e.printStackTrace();            }        }        return newImgName;    }}
/** *  文件下载
 *  fileName 文件名称
*/
public Response download(HttpServletResponse response, String fileName) {    if (fileName != null) {        File file = new File(filePath, fileName);        if (file.exists()) {            response.reset();            response.setContentType("application/octet-stream; charset=utf-8");            try {                response.setHeader("Content-Disposition", "attachment;" +                        "filename=" + new String(fileName.getBytes("UTF8"), "ISO8859-1"));            } catch (UnsupportedEncodingException e) {                e.printStackTrace();            }            byte[] b = new byte[1024];            FileInputStream fis = null;            BufferedInputStream bis = null;            try {                fis = new FileInputStream(file);                bis = new BufferedInputStream(fis);                OutputStream os = response.getOutputStream();                int i = bis.read(b);                while (i != -1) {                    os.write(b, 0, i);                    i = bis.read(b);                }                return new Response().success("文件下载成功!");            } catch (FileNotFoundException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            } finally {                if (bis != null) {                    try {                        bis.close();                    } catch (IOException e) {                        e.printStackTrace();                    }                }                if (fis != null) {                    try {                        fis.close();                    } catch (IOException e) {                        e.printStackTrace();                    }                }            }        }    }    return new Response().success();}
/** *  IO读取视频或图片
 *  videoName 文件名称
*/
public void getVideo(String videoName, HttpServletResponse response) throws IOException {    response.setContentType("images/*;charset=UTF-8");    ServletOutputStream out = null;    FileInputStream ips = null;    String filePath = videoUrl + videoName;    try {        File file = new File(filePath);        if (file.exists()) {            ips = new FileInputStream(new File(filePath));            out = response.getOutputStream();            int len = 0;            byte[] buffer = new byte[1024 * 10];            while ((len = ips.read(buffer)) != -1) {                out.write(buffer, 0, len);            }        }    } catch (Exception e) {        e.printStackTrace();    } finally {        if (!StringUtils.isEmpty(out)) {            out.flush();            out.close();            ips.close();        }

    }}

转载于:https://www.cnblogs.com/zhengbai/p/9969409.html

Java图片,视频上传,截取视频帧以及文件下载和视频IO获取相关推荐

  1. java 图片服务器 上传_Java实现把图片上传到图片服务器(nginx+vsftp)

    前言: 在我另一篇笔记中已经记载了如何用nginx + vsftp搭建图片服务器(请参考nginx + vsftp搭建图片服务器),并且用vsftp的客户端工具filezilla测试过已经可用.但是在 ...

  2. 如何将视频上传到网站服务器,如何将本地视频上传到云服务器

    如何将本地视频上传到云服务器 内容精选 换一换 在本地主机和Windows云服务器上分别安装QQ.exe等工具进行数据传输.使用远程桌面连接mstsc方式进行数据传输.该方式不支持断点续传,可能存在传 ...

  3. java图片如何上传_Java如何将图片上传到服务器

    Java如何将图片上传到服务器 发布时间:2020-11-10 17:28:18 来源:亿速云 阅读:96 作者:Leah 这篇文章将为大家详细讲解有关Java如何将图片上传到服务器,文章内容质量较高 ...

  4. java 图片分段上传_java文件分片上传,断点续传

    文件夹数据库处理逻辑 publicclassDbFolder { JSONObject root; publicDbFolder() { this.root =newJSONObject(); thi ...

  5. java 图片服务器 上传_Java向服务器上传图片

    在比较绚丽多彩的网站或者业务逻辑比较丰富的程序设计过程中,图片的相关操作时必不少的,尤其时图片的上传.还没有彻底摆脱纸质办公可能需要将纸质的文件备份上传,网站的建设可能需要上传用户头像.图片描述等等, ...

  6. JAVA图片裁剪上传实例______软件开发-帮助类

    实现思路 使用jcrop插件手机要裁剪图片的坐标 将收集到的参数传递到后台,在后台使用java图形对象绘制图像进行裁剪  后台处理流程:  1.将上传的图片按按照比例进行压缩后上传到文件服务器,并且将 ...

  7. java 图片批量上传_SpringBoot 2.0 图片上传(支持批量上传)

    SpringBoot 2.0提供了很多开箱即用的功能,这使得我们开发也更加的简单. 下面是一个图片上传的Demo(包含前端代码与后端的代码) Web端代码,支持批量上传 File upload upl ...

  8. java 图片批量上传_java实现批量上传图片,还要保证每个图片的顺序号,疑问求教!...

    rt 我要一次性同时上传n张照片,并且每张照片的顺序号还不一样,第一张的serialno是1,第二张是2.. 一开始我做单张图片上传, 代码如下 @RequestMapping("/picU ...

  9. java 图片分段上传_java 分段读取文件 并通过HTTP上传

    1.首先将文件分段,用RandomAccessFile 2.分段后将分出的内容上传到http 1.[代码][Java]代码 URL url = new URL(actionUrl); HttpURLC ...

  10. java 图片分段上传_java实现分段读取文件并通过HTTP上传的方法

    本文实例讲述了java实现分段读取文件并通过HTTP上传的方法.分享给大家供大家参考.具体如下: 1.首先将文件分段,用RandomAccessFile 2.分段后将分出的内容上传到http URL ...

最新文章

  1. 三个可能会被计算机视觉技术改变的行业
  2. vue 加载页面时触发时间_解析Vue项目的四个方面优化
  3. java-1.11.0的环境配置,JAVA 环境配置
  4. python编程入门电子书下载-Python编程基础如何快速入门?“附电子书下载”
  5. 收集下阿里集团下的技术BLOG
  6. 关键字explicit与构造函数
  7. 【Blog.Core开源】将Program升级为.NET6.0版本
  8. linux删除mysql临时文件_linux下mysql自动备份数据库与自动删除临时文件_MySQL
  9. java 打包边下载_JAVA实现边下载边压缩
  10. 【redis3在linux安装与基本操作】
  11. 方阵和的行列式、方阵行列式的和
  12. Swift - 项目部署配置(支持的系统,设备和状态条样式等)
  13. 有效管理云计算成本的多个措施
  14. mysql表结构及索引脚本
  15. BiLSTM-CRF模型理解
  16. 周志华:关于机器学习的一点思考
  17. 雷电模拟器连接Android,1.AS连接雷电模拟器
  18. Java学习:Java程序员必读的经典书籍没有之一,你读过几本?
  19. Day002-2021-07-30 String常用API
  20. 关于使用sdkmanager命令报错(环境:Mac+Android SDK)

热门文章

  1. biztalk中的发送端口产生异常及处理(下)
  2. python程序设计 清华大学出版社 pdf下载-清华大学出版社-图书详情-《Python 程序设计》...
  3. python下载文件到指定文件夹-python实现指定文件夹下的指定文件移动到指定位置...
  4. 不是程序员学python有什么用-程序员的基本功:为什么非要用Python,其他语言不好吗?...
  5. 从零开始学习python-从零开始学习python(一)
  6. python程序员需要掌握哪些技术-程序员Python编程必备5大工具,你用过几个?
  7. php7和python3性能对比-Python 2.7与Python 3.7区别
  8. python基础实例-Python入门基础知识实例,
  9. python编程100例头条-python爬虫演示:以爬取今日头条为例
  10. 用python画烟花-python实现浪漫的烟花秀