请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师我在修改路径之后却出现了这个新的路径,可我并没有设置这个路径

https://img1.sycdn.imooc.com//szimg/5c185f4f0001de8f09540074.jpg


这个是ImageUtil

package com.imooc.o2o.util;


import java.io.File;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Random;


import javax.imageio.ImageIO;


import net.coobird.thumbnailator.Thumbnails;

import net.coobird.thumbnailator.geometry.Positions;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.web.multipart.commons.CommonsMultipartFile;


import com.imooc.o2o.dto.ImageHolder;


public class ImageUtil {

private static String basePath=PathUtil.getImgBasePath();

private static final SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyyMMddHHmmss");

private static final Random r=new Random();

private static Logger logger=LoggerFactory.getLogger(ImageUtil.class);

/*

* 将CommonsMultipartFile转换成File类型

*/

public static File transferCommonsMultipartFileToFile(CommonsMultipartFile cFile){

File newFile=new File(cFile.getOriginalFilename());

try {

cFile.transferTo(newFile);

} catch (IllegalStateException e) {

logger.error(e.toString());

e.printStackTrace();

} catch (IOException e) {

logger.error(e.toString());

e.printStackTrace();

}

return newFile;

}

/*

* 处理缩略图,并返回新生成图片的相对值路径

*/

public static String generateThumbnail(ImageHolder thumbnail,String targetAddr){

String realFileName=getRandomFileName();

String extension=getFileExtension(thumbnail.getImageName());

makeDirPath(targetAddr);

String relativeAddr=targetAddr+realFileName+extension;

logger.debug("current relativeAddr is:"+relativeAddr);

File dest=new File(PathUtil.getImgBasePath()+relativeAddr);

logger.debug("current complete addr is:"+PathUtil.getImgBasePath()+relativeAddr);

try{

Thumbnails.of(thumbnail.getImage()).size(200, 200)

.watermark(Positions.BOTTOM_RIGHT,ImageIO.read(new File(basePath+"/watermark.jpg")),0.25f)

.outputQuality(0.8f).toFile(dest);

}catch(IOException e){

logger.error(e.toString());

e.printStackTrace();

}

return relativeAddr;

}

/**

* 处理详情图,并返回新生成图片的相对值路径

* @param thumbnail

* @param targetAddr

* @return

*/

public static String generateNormalImg(ImageHolder thumbnail,String targetAddr){

String realFileName=getRandomFileName();

String extension=getFileExtension(thumbnail.getImageName());

makeDirPath(targetAddr);

String relativeAddr=targetAddr+realFileName+extension;

logger.debug("current relativeAddr is:"+relativeAddr);

File dest=new File(PathUtil.getImgBasePath()+relativeAddr);

logger.debug("current complete addr is:"+PathUtil.getImgBasePath()+relativeAddr);

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){

logger.error(e.toString());

e.printStackTrace();

}

return relativeAddr;

}

/*

* 创建目标路径所涉及到的目录,即D:Maven/home/work/hjz/xxx.jpg,

* 那么home work hjz这三个文件夹都得自动创建

* @param targetAddr

*/

private static void makeDirPath(String targetAddr) {

String realFileParentPath=PathUtil.getImgBasePath()+targetAddr;

File dirPath=new File(realFileParentPath);

if(!dirPath.exists()){

dirPath.mkdirs();

}

}


/*

* 获取输入文件流的扩展名

* @param thumbnail

* @return

*/

private static String getFileExtension(String fileName) {

return fileName.substring(fileName.lastIndexOf("."));

}


/*

* 生成随机文件名,当前年月日小时分钟秒钟+五位随机数

* @return

*/

public static String getRandomFileName(){

//获取随机的五位数

int rannum=r.nextInt(89999)+10000;

String nowTimeStr=sDateFormat.format(new Date());

return nowTimeStr+rannum;

}

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

String basePath = Thread.currentThread().getContextClassLoader()

.getResource("").getPath();

Thumbnails

.of(new File("D:/Maven/image/hero.jpg"))

.size(200, 200)

.watermark(Positions.BOTTOM_RIGHT,

ImageIO.read(new File(basePath + "watermark.jpg")),

0.25f).outputQuality(0.8f)

.toFile("D:/Maven/image/newhero.jpg");

}

/*

* storePath是文件的路劲还是目录的路径

* 如果storePath是文件路径则删除改文件

* 如果storePath是目录路径则删除该目录下的所有文件

*/

public static void deleteFileOrPath(String storePath){

File fileOrPath=new File(PathUtil.getImgBasePath()+storePath);

if(fileOrPath.exists()){

if(fileOrPath.isDirectory()){

File files[]=fileOrPath.listFiles();

for(int i=0;i<files.length;i++){

files[i].delete();

}

fileOrPath.delete();

}

}

}

}


正在回答 回答被采纳积分+3

1回答

翔仔 2018-12-18 23:29:20

同学好,logger.debug("current complete addr is:"+PathUtil.getImgBasePath()+relativeAddr); 你的全路径是加了PathUtil.getImgBasePath(),其实你可以直接设置断点调试一下,就能知道原因呢,此类问题希望能够多调试,设个断点跑下就知道结果了,锻炼下哈,程序不会骗人的

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_STUDY_HJZ #1
    老师我这边不知道为什么进不去后台断点调试,所以这个全路径应该如何修改呢
    回复 有任何疑惑可以回复我~ 2018-12-19 13:01:49
  • 提问者 qq_STUDY_HJZ #2
    老师我已经自己解决了
    回复 有任何疑惑可以回复我~ 2018-12-19 13:23:29
  • 翔仔 回复 提问者 qq_STUDY_HJZ #3
    同学建议一定要修复你的调试环境,或者可能你debug的时候,还没运行到这里就出错了,还是需要学会设置断点去调试,编程不能黑盒去搞,比如说编好代码发现运行不下去就检查代码了,而是需要设置断点,逐步培养调试解决问题的能力
    回复 有任何疑惑可以回复我~ 2018-12-20 00:27:53
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信