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

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

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要