Java基于装饰者模式实现的图片工具类实例【附基于装饰者模式实现的图片工具类实例【附demo源码下源码下
载】载】
主要介绍了Java基于装饰者模式实现的图片工具类,结合完整实例形式分析了装饰者模式实现图片的判断、水
印、缩放、复制等功能,并附带demo源码供读者下载参考,需要的朋友可以参考下
本文实例讲述了Java基于装饰者模式实现的图片工具类。分享给大家供大家参考,具体如下:
ImgUtil.java:
/*
* 装饰者模式实现图片处理工具类
* 类似java的io流 -
* Img类似低级流可以独立使用
* Press和Resize类似高级流
* 需要依赖于低级流
*/
package util;
import java.io.File;
import java.util.List;
/**
* 图片工具类(装饰者)和图片(被装饰者)的公共接口
* @author xlk
*/
public interface ImgUtil {
/** 装饰方法 - 处理图片 */
List<File> dispose();
}
AbstractImgUtil.java:
package util;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
/**
* 抽象图片工具类 - 抽象装饰者
* @author xlk
*/
public abstract class AbstractImgUtil implements ImgUtil {
private ImgUtil imgUtil;
@Override
public List<File> dispose() {
return imgUtil.dispose();
}
public AbstractImgUtil(){}
public AbstractImgUtil(ImgUtil imgUtil) {
this.imgUtil = imgUtil;
}
/**
* 判断文件是不是图片
* @param file 被判断的文件
* @return 图片返回true 非图片返回false
* @throws IOException
*/
public static boolean isImg(File file) {
if (file.isDirectory()) {
return false;
}
try {
ImageInputStream iis = ImageIO.createImageInputStream(file);
Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
if (!iter.hasNext()) {//文件不是图片
return false;
}
return true;
} catch (IOException e) {
return false;
}
}
}