工作总结之----生成缩略图并上传

2024-08-27 10:18

本文主要是介绍工作总结之----生成缩略图并上传,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/**
     * 保存项目
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/saveData", method = RequestMethod.POST)
    @ResponseBody
    public HashMap saveDataNews(HttpServletRequest request, HttpServletResponse response) throws Exception {
        HashMap map = new HashMap();
        MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
        //缩略图
        MultipartFile multipartFile1 = multipartHttpServletRequest.getFile("file1");
        Long si = multipartFile1.getSize();
        if(si>0){
            Properties properties = ConfigUtil.PROPERTIES;
            String path = properties.getProperty("imageResourcrsPath");
            path = path + "/image";
            // 获取上传的图片文件
            String fileName = multipartFile1.getOriginalFilename();
            File file = new File(fileName);
            File f = new File(path);
            if (!f.exists()) {
                f.mkdirs();
            }
            // 防止出现重名文件--uuid重命名
            File newFile = FileUtil.renameFile(file);
            // 服务器存的真实名字
            String newFileName = newFile.getName();
            // 服务器路径(路径+真实名字)
            StringBuffer newPaths = new StringBuffer(path);
            newPaths.append("\\");
            newPaths.append(newFileName);
            // 路径+真实名字
            String newPath = newPaths.toString();
            // 服务器中文件
            File targetFile = new File(path, newFileName);
            try {
                multipartFile1.transferTo(targetFile);
                processUploadedFile(newPaths.toString(),newFileName);


            } catch (Exception a) {
                a.printStackTrace();
            }
            StringBuffer thuPath = new StringBuffer();
            String str = "/resource/image/small-";
            thuPath = thuPath.append(str).append(newFileName);
            //图片服务器存储路径
            String thumbnailPath=thuPath.toString();
            //图片名称
            String thumbnailName="small-" + fileName;
            Thumbnail thum =new Thumbnail();
            thum.setThumbnailPath(thumbnailPath);
            thum.setThumbnailName(thumbnailName);
            newsListService.insertSelective(thum);//保存缩略图信息
            
        }
        Integer code = 1;
        map.put("code", code);
        return map;


    }
    
    
    /**
* <p>
* Description: 上传文件重命名
* </p>

* @param file
*            文件名
* @return 文件
* @author : gaoying
* @update :
* @date : 2015-7-26
*/
public static File renameFile(File file) {
String body = "";
String ext = "";
Date date = new Date();
int pot = file.getName().lastIndexOf(".");
if (pot != -1) {
// body = date.getTime() + "";
body = UUID.randomUUID().toString().replace("-", "");
ext = file.getName().substring(pot);
} else {
body = (new Date()).getTime() + "";
ext = "";
}
String newName = body + ext;
file = new File(file.getParent(), newName);
return file;
}


//生成缩略图的操作
    private void processUploadedFile(String path, String name) throws Exception {
        long time = System.currentTimeMillis();
        GMOperation op = new GMOperation();
        //待处理图片的绝对路径
        op.addImage(path);
        //图片压缩比,有效值范围是0.0-100.0,数值越大,缩略图越清晰  s
        op.quality(100.0);
        //width 和height可以是原图的尺寸,也可以是按比例处理后的尺寸
        op.addRawArgs("-resize", "500");
        //宽高都为100
        //op.addRawArgs("-resize", "100x100");
        op.addRawArgs("-gravity", "center");
        //op.resize(100, null);
        //从属性文件中读取缩略图的保存路径
        Properties properties = ConfigUtil.PROPERTIES;
        String smallpath = properties.getProperty("imageResourcrsPath");
        smallpath = smallpath + "/image";
        File smallFile = new File(smallpath);
        if(!smallFile.exists()) {
            smallFile.mkdir();
        }


        op.addImage(smallFile.getAbsolutePath() + "/" + "small-" +  name);


        // 如果使用ImageMagick,设为false,使用GraphicsMagick,就设为true,默认为false
        ConvertCmd convert = new ConvertCmd(true);
        String osName = System.getProperty("os.name").toLowerCase();
        if (osName.contains("win")) {
            //linux下不要设置此值,不然会报错
            convert.setSearchPath(properties.getProperty("thumbnailPath"));
        }
        convert.run(op);
        //压缩图片保存
    }

这篇关于工作总结之----生成缩略图并上传的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111386

相关文章

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3