简单说明
Java中有一个io包,就是所谓的io流(input,output)输入输出流,其中有一个文件类--File类,它是一个文件对象类,我们可以将电脑上的图片(文档,视频,音频)作为地址传入转为一个file对象
然后我们可以用到 ImageIO这个类将一个资源文件读取为BufferedImage对象
BufferedImage -- BufferedImage 是Java中图片的存储结构
第一步
我们先要来完成图片的读入,我们需要封装一个方法,将图片文件转成二维数组,方法中的参数就是我们图片的path路径。
//图片读入 封装一个方法 将图片文件 -->二维数组
//path
public int[][] readImageToArr(String path){
//将电脑上的图片 地址 传入 转为一个file对象
java.io.File file = new java.io.File(path);
BufferedImage buffimg = null;
//BUfferedImage 图片的存储结构
try {//异常处理的方法,捕获异常
//将file文件 读成一个 BufferedImage
buffimg = ImageIO.read(file);
}catch(IOException e) {//异常处理
e.printStackTrace();
System.out.println("图像获取失败");
}
//读取文档 读到的文章 用什么存 String
int w = buffimg.getWidth();
int h = buffimg.getHeight();
//根据 宽 高 生成一个二维数组
int[][] imgArr = new int[w][h];
//遍历数组 存入rgb值到数组中 //取出所有像素值存到二维数组
for(int i = 0;i<w;i++) {
for(int j = 0;j<h;j++) {
int num = buffimg.getRGB(i, j);
imgArr[i][j] = num;
}
}
return imgArr;
}
然后我们就只需要,封装一下画图的方法,再重写paint方法,调用画图的方法。
我先把重写的paint方法给出来,在详细说明各各滤镜的方法。
public void paint(Graphics g) {
super.paint(g);
//super表示当前类的父类对象
//this 表示本类对象
//图片路径
String path = "C:\\Users\