zoukankan      html  css  js  c++  java
  • 图片处理工具类 util

    PathUtil

    package util;
    
    public class PathUtil {
        private static String seperator = System.getProperty("file.separator");
        
        // 获取根目录
        public static String getImgBasePath() {
            String os = System.getProperty("os.name");
            String basePath = "";
            if(os.toLowerCase().startsWith("win")) {
                basePath = "D:/image/";
            }
            else {
                basePath = "/home/image/";
            }
            basePath = basePath.replace("/", seperator);
            return basePath;
        }
        
        // 获取存取相对路径
        public static String getShopImagePath(long shopId) {
            String imagePath="/upload/item/shop" + shopId + "/";
            return imagePath.replace("/", seperator);
        }
    }

    ImageUtil

    package util;
    
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    
    import org.springframework.web.multipart.commons.CommonsMultipartFile;
    
    import net.coobird.thumbnailator.Thumbnails;
    import net.coobird.thumbnailator.geometry.Position;
    import net.coobird.thumbnailator.geometry.Positions;
    
    public class ImageUtil {
        private final static  SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMddHHmmss");
        private final static  Random r= new Random();
        
        
        public static void genarateThumbnail(CommonsMultipartFile thumbnail, String targetAddr) {
            // 文件名
            String realFileName = getRandomFileName();
            // 拓展名
            String extension = getFileExtension(thumbnail);
            // 创建目录
            makeDirPath(targetAddr);
            String relativeAddr = targetAddr + realFileName + extension;
            File dest = new File(PathUtil.getImgBasePath() + relativeAddr);
            try {
                Thumbnails.of(thumbnail.getInputStream()).size(200, 200).outputQuality(0.8)
                .toFile(dest);
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
        
        /**
         * 创建目标路径所涉及到的目录 
         */
        private static void makeDirPath(String targetAddr) {
            String realFileParentPath = PathUtil.getImgBasePath() + targetAddr;
            File dirPath = new File(realFileParentPath);
            if(!dirPath.exists()) {
                dirPath.mkdirs();
            }
        }
        /**
         * 获取文件拓展名
         * @param targetAddr
         */
        private static String getFileExtension(CommonsMultipartFile cFile) {
            String originalFileName = cFile.getOriginalFilename();
            return originalFileName.substring(originalFileName.lastIndexOf("."));
        }
        
        /**
         * 获取随机文件名
         * @return String 文件随机名
         */
        private static String getRandomFileName() {
            int randNum = r.nextInt(89999) + 10000;
            String nowTimestr = sdf.format(new Date());
            return nowTimestr + randNum;
        }
    
    }
  • 相关阅读:
    C# 序列化与反序列化
    C#匿名函数与Lambda表达式
    C#事件实现文件下载时进度提醒
    ASP.Net Core 2.2 MVC入门到基本使用系列 (五)
    ASP.Net Core 2.2 MVC入门到基本使用系列 (四)
    ASP.Net Core 2.2 MVC入门到基本使用系列 (三)
    ASP.Net Core 2.2 MVC入门到基本使用系列 (二)
    ASP.Net Core 2.2 MVC入门到基本使用系列 (一)
    图像处理中导数和模板的求法
    C语言函数指针分析
  • 原文地址:https://www.cnblogs.com/Draymonder/p/10006819.html
Copyright © 2011-2022 走看看