图片处理工具类以及路径管理

校园商铺中对于图片处理,封装了一个工具类,该类主要对图片进行重命名,以及对图片增加水印。

一、路径管理工具类

该类主要的作用主要是为了生成图片保存的相对地址,以及获取获取图片的根目录。

1.首先是根据系统获取图片保存的绝对路径

不同的系统绝对路径也不同,因此,需要根据不同的系统,生成不同的绝对路径

//获取系统路径分隔符
private static String seperator = System.getProperty("file.seperator");
private static String getImgBasePath(){
	String osName = System.getProperty("os.name");
	String basePath = ""if(osName.startWith("win")){
	//此时为windows系统
		basePath = "D:/projectDev/Img/"
	}else{
		basePath = "/home/us/image/";
	}
	basePath.replace("/",seperator);
	return basePath;
}

2.相对路径的处理

相对路径:此时,所有的图片都存在相对目录下,只是最后一层目录,根据店铺Id的不同,来存放各个店铺的图片。

private static String getShopImgPath(long shopId){
	String shopImgPath = "upload/item/shop/" + shopId +"/";
	return shopImgPath.replace("/",seperator);
}
二、图片处理类

图片处理类主要是对图片进行重命名,并添加水印

1.图片的重命名

图片名需要采用 当前时间+5位随机数+后缀名

//获取5位随机数,获取当前日期,拼接
private static String getRandomFileName(){
	Random random = new Random();
	int str = random.nextInt(89999)+10000;
	String nowTime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
	return nowTime+str;
}
private static String getExtension(String fileName){
	return file.subString(fileName.lastIndexOf("."));
}

至此,获取随机数和后缀名的方法已经完毕,接下来就是图片的处理。本项目用到了加水印。
水印获取:通过类加载器到根目录获取静态资源
basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();

private static String generateThumbnail(ImageHolder thumbnail, String targetAddr){
//ImageHolder 为封装的类,存文件名和文件流
//targetAddr为相对路径
String randomName = getRandomFileName();
String extensionName = getExtension();
//检查是否存在目录,如果不存在创建
makeDirs(targetAddr);
String realFileName = targetName + randomName + extensionName;
try {
			Thumbnails.of(thumbnail.getImage()).size(337, 640)
					.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(basePath + "/watermark.jpg")), 0.25f)
					.outputQuality(0.9f).toFile(dest);
		} catch (IOException e) {
			e.printStackTrace();
		}
}

private void makeDirs(String s){
	File f = new File(PathUtil.getImgBasePath() + s);
	if(!f.exsits){
		f.mkdirs();
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值