网站地图    收藏   

主页 > 后端 > java >

Java swing 图像处理多种效果实现教程

来源:自学PHP网    时间:2020-09-27 14:14 作者:小飞侠 阅读:

[导读] Java swing 图像处理多种效果实现教程...

今天带来Java swing 图像处理多种效果实现教程教程详解

项目记录:

1.图像原理

通常图像都是2D,对一副图像,可以看做其宽w*高h的一个二维数组, 即 图像=int[w][h],在w和h位置的每一个 int 值,就是这个点的像素值。

图像处理的本质是:对代表图像二维数组中的值进行重新计算。

2.思路:

将一张图片转化成一个int型m二维数组

对于每一个像素点大小和颜色进行计算达到图像处理的效果。

在画笔中设置好颜色,填充形状然后将新的图片画出。

3.实现效果

获取像素点方法,首先利用文件imageIO读取图片,然后根据图片长宽进行遍历得到每个像素点的颜色,最后return一个二维数组为处理做准备。

 /**
 * 根据图片路径,获取该该图片的每个像素点并保存到对应的二维数组中
 * @param path 图片路径
 * @return 保存像素点的二维数组
 */
 public int[][] getImgPixel(String path){
 File file = new File(path);
 BufferedImage buffImg = null; //缓冲图片
 try {
  buffImg = ImageIO.read(file);
 } catch (IOException e) {
  e.printStackTrace();
 }
 int w = buffImg.getWidth();
 int h = buffImg.getHeight();
 //定义二维数组,保存像素点
 int[][] pixelArray = new int[w][h];
 //读取每个位置的像素点
 for(int i=0;i<w;i++){
  for(int j=0;j<h;j++){
  int pixel = buffImg.getRGB(i, j); //获取每个位置像素值
  pixelArray[i][j] = pixel;
  }
 }
 return pixelArray;
 }

原图

根据之前得到的二维数组进行遍历,然后使用Color对象的get方法得到图片颜色,最后再使用画笔画出图像。

 //原图
 public void drawImg(String path, Graphics gr){
   //得到图片路径
 int[][] img = getImgPixel(path);
 for(int i=0;i<img.length;i++){
  for(int j=0;j<img[i].length;j++){
  int pixel = img[i][j];
  //原图颜色不变
  Color c = new Color(pixel);
   gr.setColor(c);
   //使用rectangle填充每一个点
   gr.fillRect(i, j, 1,1);
  }
 }
 }

详解Java线程同步器CountDownLatch
下一篇:Java中的程序计数器是什么

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论