package com.YuyeTech.TPlat.utils;

import lombok.Data;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;

/**
 * @author:slambb
 * @date:2020/4/9
 */

public class ImageUtils {

    public static String getCompressPath(MultipartFile file,Integer size){

        try {
            //设置统一图片后缀名
            String suffixName;
            //获取图片文件名(不带扩展名的文件名)
            String prefixName = getFileNameWithoutEx(file.getOriginalFilename());
            //获取图片后缀名,判断如果是png的话就不进行格式转换,因为Thumbnails存在转png->jpg图片变红bug
            String suffixNameOrigin = getExtensionName(file.getOriginalFilename());
            if ("png".equals(suffixNameOrigin)) {
                suffixName = "png";
            } else {
                suffixName = "jpg";
            }
            String tempFilePath = "SpringProject/src/main/resources/";
            //图片在项目中的地址(项目位置+图片名,带后缀名)
            String contextPath = tempFilePath + prefixName + "." + suffixName;
            File tempFile = null;
            //图片在项目中的地址(项目位置+图片名,带后缀名)
            tempFile = new File(contextPath);
            if (!tempFile.exists()) {
                //生成图片文件
                FileUtils.copyInputStreamToFile(file.getInputStream(), tempFile);
            }
            if (!"png".equals(suffixName)) {
                Thumbnails.of(contextPath).size(size, size).outputQuality(1f).outputFormat("jpg").toFile(contextPath);
            } else {
                Thumbnails.of(contextPath).size(size, size).outputQuality(1f).toFile(contextPath);
            }
            return contextPath;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return "";
    }

    public static  void deleteImage(String storePath){
        File fileOrDire = new File(storePath);
        if (fileOrDire.exists()){
            if (fileOrDire.isDirectory()){
                //是目录路径 删除全部文件
                File[] files = fileOrDire.listFiles();
                for (File file : files){
                    file.delete();
                }
            }
            //是文件
            fileOrDire.delete();
        }
    }
    /**
     * 获取不带扩展名的文件名
     *
     * @param filename 文件
     * @return
     */
    public static String getFileNameWithoutEx(String filename) {
        if ((filename != null) && (filename.length() > 0)) {
            int dot = filename.lastIndexOf('.');
            if ((dot > -1) && (dot < (filename.length()))) {
                return filename.substring(0, dot);
            }
        }
        return filename;
    }

    /**
     * 获取文件扩展名
     *
     * @param filename 文件名
     * @return
     */
    public static String getExtensionName(String filename) {
        if ((filename != null) && (filename.length() > 0)) {
            int dot = filename.lastIndexOf('.');
            if ((dot > -1) && (dot < (filename.length() - 1))) {
                return filename.substring(dot + 1);
            }
        }
        return filename;
    }
}
