一.Controller
@PostMapping(value = {"/watermark"},
produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public String watermark(@RequestParam("file") MultipartFile image) throws Exception {
// MarkService markService = new TextMarkServiceImpl(); //单个文字水印
// MarkService markService = new MoreTextServiceImpl(); //多个文字水印
// MarkService markService = new ImgMarkServiceImpl(); //单个图片水印
MarkService markService = new MoreImgMarkServiceImpl(); //多个图片水印
//将上传的图片上传到项目中类路径下面
String path = "";
String realUploadPath = InvestInvitationInfoController.class.getClassLoader().getResource(path).getPath();
String imageURL =uploadImage( image, path, realUploadPath );
File imgFile=new File(realUploadPath + image.getOriginalFilename());
//添加水印
String watermark = markService.watermark(imgFile, image.getOriginalFilename(), path, realUploadPath);
return watermark;
}
//将上传的图片上传到项目中类路径下面
public String uploadImage(MultipartFile file, String uploadPath, String physicalUploadPath ) {
String filePath = physicalUploadPath + file.getOriginalFilename();
try {
File targetFile=new File(filePath);
FileUtils.writeByteArrayToFile(targetFile, file.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
return uploadPath + "/" + file.getOriginalFilename();
}
二.Service
import java.awt.*;
import java.io.File;
public interface MarkService {
public static final String MARK_TEXT="LMS"; //字体水印
public static final String FONT_NAME="微软雅黑";
public static final int FONT_STYLE= Font.BOLD;
public static final int FONT_SIZE=20;
public static final Color FONT_COLOR=Color.BLACK;
public static final int X=10;
public static final int Y=10;
public static final float ALPHA=0.3f; //透明度
public static final String LOGO="mimi.jpg"; //图片水印,提前保存在类路径下的图片
public String watermark(File img, String imgName, String imgpath, String realImgPath);
}
三.ServiceImpl
(一)单个文字水印
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class MarkServiceImpl implements MarkService {
public static final String MARK_TEXT = "LM