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

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

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2