Thumbnails使用
在开发java是,使用Thumbnails工具类能帮助我们对图片进行很好的处理,Thumbnails对图片的操作进行了很好的封装。
使用步骤
- 导入jar包
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
2.具体使用方法
ImageUtil 类
public class ImageUtil {
private static String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
private static final SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
private static final Random r = new Random();
/**
*
* @Description:PathUtil工具类用来获取两个目录
* 1.存放图片的基本目录
* 2.是商家存放图片的目录
*/
public static String generateThumbnail(File shopImg ,String targetAddr) {
String realFileName = getRandomFileName();//获取随机文件名(时间+随机五位数),其中时间格式为yyyyMMddHHmmss(通过SimpleDateFormat定义)
String extension = getFileExtension(shopImg);//获取扩展名
makeDirPath(targetAddr);//创建涉及的目录
String relativeAddr = targetAddr + realFileName + extension;//完整地址
File dest = new File(relativeAddr);
try {
Thumbnails.of(shopImg)
.size(200, 200).watermark(Positions.BOTTOM_RIGHT,ImageIO.read(new File(basePath + "watermark.jpg")),0.25f).outputQuality(0.8f)
.toFile(dest);//注意这里获取的basePath是测试路径下的水印图片,即测试路径下同样需要存放水印图片
} catch (Exception e) {
e.printStackTrace();
}
return relativeAddr;
}
// 创建目标路径所涉及的目录
private static void makeDirPath(String targetAddr) {
String realFileParentPath = targetAddr;
File dirPath = new File(realFileParentPath);
// 判断其是否存在
if(!dirPath.exists()) {
// 创建所有涉及的目录
dirPath.mkdirs();
}
}
// 获取文件扩展名
private static String getFileExtension(File shopImg) {
// String originalFilename = shopImg.getOriginalFilename();
String originalFilename = shopImg.getName();
return originalFilename.substring(originalFilename.lastIndexOf("."));
}
// 生成随机文件名
private static String getRandomFileName() {
// 获取随机五位数
String rannum = UUID.randomUUID().toString().substring(0, 5);
String nowTimeStr = sDateFormat.format(new Date());
return nowTimeStr+rannum;
}
public static void main(String[] args) {
System.out.println(basePath+"watermark.jpg");
try {
Thumbnails.of(new File("G:/WebZy/oto/src/main/resources/123.jpg"))
.size(200, 200).watermark(Positions.BOTTOM_RIGHT,ImageIO.read(new File(basePath + "watermark.jpg")),0.25f).outputQuality(0.8f)
.toFile("G:/WebZy/oto/src/main/resources/1234.jpg");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
PathUtil类
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 = "E:/project/Image/";
}else {
basePath="home/xiangze/image/";
}
basePath = basePath.replace("/", seperator);
return basePath;
}
public static String getShopImagePath(int shopId) {
String imagePath = "E:/project/upload/item/shop/" + shopId + "/";
return imagePath.replace("/", seperator);
}
}
其它功能用到时查看官方文档