java实现ps功能_java简单图片,可以实现ps的几个小滤镜

更新时间:2023-06-18 08:26:40 阅读: 评论:0

java实现ps功能_java简单图⽚,可以实现ps的⼏个⼩滤镜java 简单图⽚,可以实现ps的⼏个⼩滤镜
以下教你实现图⽚马赛克,⿊⽩画,珠纹化,油画效果等处理技术原理及实现。看完⾃⼰也可以简单的玩⼀玩。
1. 需要⽤到的包
java.awt
// ⽤于创建⽤户界⾯和绘制图形图像的所有类
javax.swing
// 提供⼀组“轻量级”(全部是 Java 语⾔)组件,尽量让这些组件在所有平台上的⼯作⽅式都相同。
2. 主程序
我们需要定义⼀个主程序的类,叫做 class DrawFrame, 并且在主程序中调⽤“显⽰界⾯ ”⽅法initUI(),在这个⽅法中,我们将配置画图⼯具需要显⽰的组件,例如窗体,⾯板,按钮等。
public class DrawFrame {
// 主函数
public static void main(String[] args) {
DrawFrame frame = new DrawFrame();
frame.initUI();
}
//显⽰界⾯
public void initUI() {
}
}
手工制作小动物2.1 配置initUI()⽅法
我们先创建组件:窗体(就是类似弹出的对话框),并且设置窗体的⼀些属性
/
/窗体对象
javax.swing.JFrame jf = new javax.swing.JFrame();
// 设置窗体的⼤⼩
jf.tSize(800, 800);
// 设置窗体的名字
jf.tTitle("画图⼯具");
//设置窗体居中显⽰
jf.tLocationRelativeTo(null);
//设置退出进程的⽅法,这⾥3代表:我们点击窗⼝上的叉叉时,就退出当前线程(即程序执⾏结束,表⽰正在运⾏的红⾊⽅框消失)
jf.tDefaultCloOperation(3);
//设置窗体可见
jf.tVisible(true);
如下就是窗体:
然后,我们需要在窗体上获取画笔(画笔可以⽣成颜⾊,画出各类形状),⼀定要在窗体显⽰可见后。
//画笔:图形画在哪个组件上,画笔就从该组件上获取
//从窗体上获取画笔对象(⼀定要在窗体显⽰可见之后)
Graphics g = jf.getGraphics();
在此之后,我们需要给窗体添加⿏标监听器⽅法,⿏标监听器⽅法需要输⼊的参数时⼀个⿏标监听器对象,那么我们可以创建⼀个DrawListener类,其implements了⿏标监听器类的API,我们需要重写⽅法。
//事件处理类
public class DrawListener implements MouListener{
public void mouClicked(MouEvent e) {
// Clicked可以理解成点击和释放后仍在同⼀位置
}
public void mouPresd(MouEvent e) {
// 点击⿏标
}
public void mouRelead(MouEvent e) {
《祖国颂》朗诵稿// 释放⿏标
}
public void mouEntered(MouEvent e) {
// ⿏标进⼊窗体
}
public void mouExited(MouEvent e) {
// ⿏标退出窗体
}
}
3 马赛克效果
我们需要的马赛克效果是,当⿏标按下时,出现马赛克的图⽚。
3.1马赛克效果的原理
每⼀张图⽚其实是由像素(Pixel)组成的,例如500*600像素的图⽚,是横向500个像素的长度,纵向600个像素的长度。那我们删除部分像素点,再填充以临近未删除的像素点,就形成了马赛克效果。
3.2 图⽚导⼊并得到像素点
当我们导⼊图⽚之后,我们需要⽤⼀个数组保存每个像素点的数值
public int[][] getImgPixel(String pathName){
//图⽚⽂件
File file = new File(pathName);
BufferedImage buffImg = null;
try {
buffImg = ad(file);
} catch (IOException e) {
e.printStackTrace();
}廉政教育心得
//获取buffImg⼤⼩
int w = Width();
int h = Height();
System.out.print(w);
System.out.print(h);
//保存图⽚像素点的⼆维数组
int[][] pixelArray = new int[h][w];
//把图⽚的每个像素点保存到数组中
for(int i=0;i
for(int j=0;j
//读取图⽚的像素点的颜⾊
int pixel = RGB(j, i);
//保存到⼆维数组中
pixelArray[i][j] = pixel;
量化管理
}
}
return pixelArray;
}
3.3 马赛克处理
通过两个for循环,间隔15个像素点的取法,然后⼜⽤gr.fillRect()取临近的像素点填充扔掉的像素点。public void drawPixel(String pathName){
int[][] pixelArray = getImgPixel(pathName);
for(int i=0;i
for(int j=0;j
Color color = new Color(pixelArray[i][j]);
gr.tColor(color);
gr.fillRect(j+300, i+300, 15,15);
}
}
}
最后,我们将这马赛克⽅法drawPixel(),加⼊到“⿏标按下”就可以实现public void mouPresd(MouEvent e) {
System.out.println("按下");
//实现六种图像效果
drawPixel("\1.jpg");
}
3.4最终效果
其他⼏种图⽚效果的展⽰,原理及代码
4 灰度效果
原理:
我们只需要取每个像素点,三原⾊RGB的平均值作为该像素点的RGB。// 灰度效果
public void drawGray(String pathName){
int[][] pixelArray = getImgPixel(pathName);
for(int i=0;i
for(int j=0;j
Color color = new Color(pixelArray[i][j]);
int Red();
int Green();
int Blue();
int sum=(r+g+b)/3;
曹操蒿里行
Color nc=new Color(sum,sum,sum);
gr.tColor(nc);
gr.fillOval(j, i, 1,1);
外貌特征描写>收麦子}
}
}
5 ⽆背景效果
原理:
我们只输出RGB中Blue的值⼤于50的像素点
// ⽆背景
public void drawNoBackground(String pathName){
int[][] pixelArray = getImgPixel(pathName);
for(int i=0;i
for(int j=0;j
Color color = new Color(pixelArray[i][j]);
int Red();
int Green();
int Blue();
if(b>50){
Color nc1 = new Color(r,g,b);
gr.tColor(nc1);
gr.fillOval(j+600, i, 1,1);
}
}
}
}
6 珠纹化效果
原理:
类似于马赛克效果,每隔10个像素点取⼀个,然后⽤椭圆填充8个。
//珠纹化实现
public void drawBible(String pathName){
int[][] pixelArray = getImgPixel(pathName);
for(int i=0;i
for(int j=0;j
Color color = new Color(pixelArray[i][j]);
gr.tColor(color);
gr.fillOval(j, i+300, 8,8);
}
}
}
7 ⿊⽩画效果单基因遗传病
原理:
我们将RGB中Blue的值⼩于100时,我们设置画笔颜⾊为⿊,否则为⽩。每隔两个像素取⼀个,⽤椭圆填充周围四个。// ⿊⽩版画效果

本文发布于:2023-06-18 08:26:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/981886.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:像素点   窗体   效果   需要   设置   画笔   组件   像素
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图