三.美颜相机开发

news/2024/10/30 6:25:52/

美颜相机开发

UI的使用:

JFrame JButton

Listener:

加入按钮实现点击什么滤镜特效就绘制什么滤镜!

代码:

首先对UI进行编写

public class ImagePad {//使用字符串储存按钮名称String[] strs = {"打开", "保存", "原图", "灰度", "二值化", "马赛克", "原点马赛克", "怀旧", "轮廓", "素描", "锐化", "缩小", "放大"};//创建监听器ImageListener img1=new ImageListener();public void showUI(){//主体的布局JFrame jf = new JFrame("图像处理V1.0");jf.setSize(800, 600);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setLayout(new FlowLayout());Font font = new Font("黑体", Font.BOLD, 16);//将按钮名称循环加入按钮并对其加入监听for (int i = 0; i < strs.length; i++) {JButton btn = new JButton(strs[i]);btn.setBackground(Color.WHITE);btn.setFont(font);btn.addActionListener(img1);jf.add(btn);}jf.setVisible(true);//可视化后要创建绘画img1.g= jf.getGraphics();}

绘画工具函数的编写

获取图片像素值

public int[][] getImagePixeArray(String path){//对图片路径进行读入File file = new File(path);BufferedImage buffimg=null;try {buffimg=ImageIO.read(file);} catch (IOException e) {throw new RuntimeException(e);}//获取图片像素值int width =buffimg.getWidth();int height=buffimg.getHeight();//定义和图片宽高相等的数组来储存像素值int[][] imgArr = new int[width][height];for (int i = 0; i < imgArr.length; i++) {for (int j = 0; j < imgArr[i].length; j++) {imgArr[i][j]=buffimg.getRGB(i,j);}}return imgArr;}

编写不同滤镜的特效函数

原图
/*** 原图* @param imgArr* @param g*/public void drawImage(int[][] imgArr, Graphics g){for (int i = 0; i < imgArr.length ; i++) {for (int j = 0; j < imgArr[i].length; j++) {int pixnum=imgArr[i][j];Color color = new Color(pixnum);g.setColor(color);g.fillRect(X+i,Y+j,1,1);}}}
灰度图
/*** 灰度图* @param imgArr* @param g*/public void drawGrayImage(int[][] imgArr, Graphics g){for (int i = 0; i < imgArr.length ; i++) {for (int j = 0; j < imgArr[i].length; j++) {int pixnum=imgArr[i][j];//拆分像素值int red=(pixnum>>16)&255;int green=(pixnum>>8)&255;int blue=(pixnum>>0)&255;//灰度图RGB值相等int gray=(red+green+blue)/3;Color color = new Color(gray);g.setColor(color);g.fillRect(X+i,Y+j,1,1);}}}
二值化图
/*** 二值化图* @param imgArr* @param g*/public void drawBinaryImage(int[][] imgArr, Graphics g){for (int i = 0; i < imgArr.length ; i++) {for (int j = 0; j < imgArr[i].length; j++) {int pixnum=imgArr[i][j];//拆分像素值int red=(pixnum>>16)&255;int green=(pixnum>>8)&255;int blue=(pixnum>>0)&255;int gray=(red+green+blue)/3;//利用灰度值做二分if(gray<127){g.setColor(Color.black);}else {g.setColor(Color.WHITE);}g.fillRect(X+i,Y+j,1,1);}}}
马赛克图
/*** 马赛克* @param imgArr* @param g*/public void drawMosaicImage(int[][] imgArr, Graphics g){for (int i = 0; i < imgArr.length ; i+=10) {for (int j = 0; j < imgArr[i].length; j+=10) {//间距采样//均值法int pixnum=imgArr[i][j];Color color = new Color(pixnum);g.setColor(color);g.fillRect(X+i,Y+j,10,10);}}}

在监听器中实现

public class ImageListener implements ActionListener {ImageTools imgtools=new ImageTools();Graphics g;//定义数组等于获取的照片数组int [][] imagArr;{String path="F:\\java learning\\gaoyuhao.png";imagArr=imgtools.getImagePixeArray(path);}//对actionPerformed函数进行重写@Overridepublic void actionPerformed(ActionEvent e) {String btnStr=e.getActionCommand();System.out.println("点击了"+btnStr);switch (btnStr){case "原图":imgtools.drawImage(imagArr,g);break;case "灰度":imgtools.drawGrayImage(imagArr,g);break;case "二值化":imgtools.drawBinaryImage(imagArr,g);break;case "马赛克":imgtools.drawMosaicImage(imagArr,g);break;}}
}

效果如下:

在这里插入图片描述


http://www.ppmy.cn/news/437098.html

相关文章

flutter美颜相机插件

flutter美颜相机插件 beauty_cam&#xff08;github&#xff09; beauty_cam&#xff08;gitee&#xff09; beauty_cam&#xff08;pub.dev&#xff09; beauty_cam&#xff08;pub.flutter-io.cn&#xff09; flutter美颜相机 目前功能&#xff1a; 开关美颜拍照拍视频切…

JAVA PC端美颜相机

这是我在蓝杰做的第一个项目:PC端美颜相机。这个小程序的本质就是对一张图像做处理。存储在计算机的图像信息实际上是一个个像素点&#xff0c;不同的像素点有不同的rgb值&#xff0c;修改像素点的rgb值我们就可以将图像处理成我们想要的效果。 首先我们需要创建一个图形界面作…

美颜相机-磨皮实现

主要参考了《使用OPENCV简单实现具有肤质保留功能的磨皮增白算法》这篇文章&#xff0c;我使用了python实现&#xff0c;最主要的是直接按原文公式算的话&#xff0c;我这里一直有个问题就是原图中纯色的地方处理后会出现色彩斑点而且非常严重&#xff0c;不知道原作者是否有这…

美颜相机毕设项目零基础教学

美颜相机开发手册 1.数字化图像底层原理 2.文件读取图片&#xff0c;操作图片矩阵 3.图像滤镜算法实现 4.项目结构设计 5.图像存储&#xff0c;附加功能实现&#xff08;画笔/P图/贴纸…&#xff09; 6.卷积图像处理算法实现 7.图像识别原理 8.二维码的生成与识别 9.以…

美颜相机的基本功能实现

美颜相机的基本功能实现 基本知识 在学习了在标准绘制图形库中进行简单的递归图像实现后&#xff0c;我们把目光聚焦到了对于复杂图片文件的处理上&#xff0c;在这里需要简单介绍一下关于图像色彩的知识&#xff0c;以及缓存图片类的介绍。 图形色彩参数“ARGB” 在一个复…

linux 相机软件,镜像相机app

镜像相机app带给用户更多特别的拍摄滤镜和效果&#xff0c;这里提供了两种拍摄方式&#xff0c;一种是普通的拍摄效果&#xff0c;还有一种拍摄出来的是左右镜面对称的效果&#xff0c;并且镜像相机app中随时可以进行图片编辑和美化功能&#xff0c;强大的修图和丰富的滤镜贴纸…

补充 | 美颜相机卡顿trace分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、美颜相机录制视频 trace 分析概览二、Camera FWK 与 camera HAL 录像交互三、美颜相机app 与SurfaceFlinger 交互四、美颜相机卡顿丢帧trace 分析 …

Java程序结构模板——美颜相机案例

我们以美颜相机举例&#xff0c;分析一个程序都需要什么。 1、UI界面&#xff1a;大部分需要交互的程序都需要UI界面来实现交流互动。 2、监听器&#xff1a;人们在UI中的操作需要监听器来捕捉和执行相应的命令。 3、工具类&#xff1a;将执行命令的方法单独封装成工具类&#…