thumbnailator图片处理简单使用之后端图片水印添加【配合ssm框架】

maven工程下

后端图片水印添加

    <!-- 图片处理thumbnailator -->
    <dependency>
      <groupId>net.coobird</groupId>
      <artifactId>thumbnailator</artifactId>
      <version>0.4.8</version>
    </dependency>

创建PathUtil管理路径

/**
 * @program: via
 * @description: 路径工具
 * @author: Mr.liu
 * @create: 2019-07-22 14:05
 **/

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:/projectdev/image";
        }else {
            basePath="/home/xiangze/image/";
        }
        basePath=basePath.replace("/",seperator);
        System.out.println("---------os:"+os+"  seperator"+seperator);
        return basePath;
    }

     /**
     * @Description: 获取店铺图片存储路径
     * @Param:
     * @return:
     * @Author: Mr.liu
     * @Date: 2019/7/22
     */
     public static String getShopImagePath(long shopId){
         String imagePath="/upload/item/shop/"+shopId+"/";
         return imagePath.replace("/",seperator);
     }

}

创建ImageUtil处理图片

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import javax.imageio.ImageIO;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * @program: via
 * @description: 图片处理
 * @author: Mr.liu
 * @create: 2019-07-22 11:56
 **/
public class ImageUtil {

    private static Logger logger= LoggerFactory.getLogger(ImageUtil.class);
    private static String basePath=Thread.currentThread().getContextClassLoader().getResource("").getPath();
    private static final SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyyMMddHHmmss");
    private static final Random r=new Random();

    public static String generateThombnail(CommonsMultipartFile thumbnail, String targetAddr){
       String realFileName=getRandomFileName();//获取随机名
        String extension=getFileExtension(thumbnail);//获取扩展名
        makeDirPath(targetAddr);//创建文件目录
        String relativeAddr=targetAddr+realFileName+extension;
        logger.debug("current relativeAddr is:"+relativeAddr);
        logger.debug("file:  "+thumbnail.getName());
        logger.debug("basePath: "+basePath);
        logger.debug("current complete addr is:"+PathUtil.getImgBasePath()+relativeAddr);

        File dest=new File(PathUtil.getImgBasePath()+relativeAddr);
        try {
            Thumbnails.of(thumbnail.getInputStream())
                    .size(200,200).watermark(Positions.BOTTOM_RIGHT, ImageIO
                    .read(new File(basePath+"me.png")),0.5f)//透明度
                    .outputQuality(0.8f).toFile(dest);//压缩比例
        } catch (IOException e) {
            e.printStackTrace();
        }
        return relativeAddr;

    }
    public static void deleteFile(String storePath) {
        File file = new File(PathUtil.getImgBasePath() + storePath);
        if (file.exists()) {
            if (file.isDirectory()) {
                File files[] = file.listFiles();
                for (int i = 0; i < files.length; i++) {
                    files[i].delete();
                }
            }
            file.delete();
        }
    }
     /**
     * @Description: 创建目标路径所涉及目录,即/home/work/xx.jpg
     * @Param:
     * @return:
     * @Author: Mr.liu
     * @Date: 2019/7/22
     */
    private static void makeDirPath(String targetAddr) {
        String realFileParentPath=PathUtil.getImgBasePath()+targetAddr;
        File dirPath=new File(realFileParentPath);
        if(!dirPath.exists()){
            dirPath.mkdirs();
        }

    }

    /**
        * @Description: 获取输入文件流扩展名
        * @Param:
        * @return:
        * @Author: Mr.liu
        * @Date: 2019/7/22
        */
    private static String getFileExtension(MultipartFile cFile) {
        String originalFileName=cFile.getOriginalFilename();
        return originalFileName.substring(originalFileName.lastIndexOf("."));
    }

    /**
 * @Description: 生成随机文件名, 当前年月日小时分钟秒钟+五位随机数
 * @Param:  
 * @return:  
 * @Author: Mr.liu
 * @Date: 2019/7/22 
 */
    private static String getRandomFileName() {
        //获取随机五位数
        int rannum=r.nextInt(89999)+10000;
        String now=sDateFormat.format(new Date());
        return now+rannum;
    }


    public static void main(String[] args) throws IOException {



        Thumbnails.of(new File("C:/Users/acer/Desktop/桌面背景/1.png"))
                .size(200,200).watermark(Positions.BOTTOM_RIGHT, ImageIO
                .read(new File("E:/ideaProjects/test/via/src/main/resources/me.png")),0.25f)//透明度
                .outputQuality(0.8f).toFile("C:/Users/acer/Desktop/桌面背景/1new.png");//压缩比例
    }

}

以demo运行使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值