图像读入处理_基础滤镜效果

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

简单说明

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\
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值