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运行使用