简单说明
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\\TZH\\Desktop\\swk.jpg";

本文介绍了如何使用Java进行图像处理,包括图片的读入、转化为BufferedImage对象,以及应用六种基础滤镜:画原图、马赛克、灰度、黑白二值化、轮廓检测和油画风格。每种滤镜的实现原理和代码细节都有详细说明,如马赛克滤镜通过增大像素矩阵遍历间距和画矩形尺寸实现,而轮廓检测则通过比较相邻像素的灰阶值来识别图像边界。
最低0.47元/天 解锁文章
329

被折叠的 条评论
为什么被折叠?



