当前位置: 首页 > news >正文

Java+Swing可视化图像处理软件

Java+Swing可视化图像处理软件

  • 一、系统介绍
  • 二、功能展示
    • 1.图片裁剪
    • 2.图片缩放
    • 3.图片旋转
    • 4.图像灰度处理
    • 5.图像变形
    • 6.图像扭曲
    • 7.图像移动
  • 三、系统实现
    • 1.ImageProcessing.java
  • 四、其它
    • 1.其他系统实现
    • 2.获取源码

一、系统介绍

该系统实现了图片裁剪、缩放、旋转、图像灰度处理、变形、扭曲、保存、移动。

二、功能展示

1.图片裁剪

在这里插入图片描述

2.图片缩放

在这里插入图片描述

3.图片旋转

在这里插入图片描述

4.图像灰度处理

在这里插入图片描述

5.图像变形

在这里插入图片描述

6.图像扭曲

在这里插入图片描述

7.图像移动

在这里插入图片描述

三、系统实现

1.ImageProcessing.java

package cn.image;import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.ImageObserver;
import java.awt.image.MemoryImageSource;
import java.awt.image.PixelGrabber;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;public class ImageProcessing extends JFrame {String filepath = "";String filename = "";File file2;BufferedImage buffimg = null;ImageIcon ic;Image ia, l;JLabel jLabel1 = null;BorderLayout borderLayout1 = new BorderLayout();JMenuBar jmb = new JMenuBar();JMenu file, edit, view, caijian, suofang, gray, see, save, move, niuqu;public ImageProcessing(String title) {super(title);file = new JMenu(" 文件 ");JMenuItem dakai = new JMenuItem(" 打开 ");dakai.addActionListener(new dakai_actionAdapter(this));file.add(dakai);file.addSeparator();JMenuItem tuichu = new JMenuItem(" 退出 ");tuichu.addActionListener(new tuichu_actionAdapter(this));file.add(tuichu);jmb.add(file);caijian = new JMenu(" 裁剪 ");JMenuItem fangxingcaijian = new JMenuItem(" 方形裁剪 ");fangxingcaijian.addActionListener(new testImage_fangxingcaijian_actionAdapter(this));this.getContentPane().setLayout(borderLayout1);caijian.add(fangxingcaijian);caijian.addSeparator();
//		JMenuItem juxingcaijian = new JMenuItem(" 矩形裁剪 ");
//		juxingcaijian.addActionListener(new testImage_fangxingcaijian_actionAdapter(this));
//		this.getContentPane().setLayout(borderLayout1);
//		caijian.add(juxingcaijian);jmb.add(caijian);suofang = new JMenu(" 缩放 ");JMenuItem suoxiao = new JMenuItem(" 缩小 ");suoxiao.addActionListener(new testImage_suoxiao_actionAdapter(this));this.getContentPane().setLayout(borderLayout1);suofang.add(suoxiao);suofang.addSeparator();JMenuItem fangda = new JMenuItem(" 放大 ");fangda.addActionListener(new testImage_fangda_actionAdapter(this));suofang.add(fangda);jmb.add(suofang);edit = new JMenu(" 旋转 ");JMenuItem xuanzhuan90 = new JMenuItem(" 旋转 90 度(顺时针)");xuanzhuan90.addActionListener(new xuanzhuan90_actionAdapter(this));edit.add(xuanzhuan90);edit.addSeparator();JMenuItem xuanzhuan180 = new JMenuItem(" 旋转 180 度 (顺时针)");xuanzhuan180.addActionListener(new xuanzhuan180_actionAdapter(this));edit.add(xuanzhuan180);edit.addSeparator();JMenuItem xuanzhuanziyou = new JMenuItem(" 旋转 270度(顺时针)");xuanzhuanziyou.addActionListener(new xuanzhuanziyou_actionAdapter(this));edit.add(xuanzhuanziyou);edit.addSeparator();JMenuItem xuanzhuan270 = new JMenuItem(" 自由旋转角度 ");xuanzhuan270.addActionListener(new xuanzhuan270_actionAdapter(this));edit.add(xuanzhuan270);jmb.add(edit);gray = new JMenu(" 图像灰度处理 ");JMenuItem huidu = new JMenuItem(" 灰度变换 ");huidu.addActionListener(new huidu_actionAdapter(this));gray.add(huidu);gray.addSeparator();JMenuItem junhenghua = new JMenuItem(" 直方图均衡化 ");junhenghua.addActionListener(new junhenghua_actionAdapter(this));gray.add(junhenghua);jmb.add(gray);// zyf/see = new JMenu(" 变形 ");JMenuItem lashen = new JMenuItem(" 拉伸 ");lashen.addActionListener(new testImage_lashen_actionAdapter(this));see.add(lashen);see.addSeparator();JMenuItem zhankuan = new JMenuItem(" 展宽 ");zhankuan.addActionListener(new testImage_zhankuan_actionAdapter(this));see.add(zhankuan);see.addSeparator();jmb.add(see);niuqu = new JMenu(" 扭曲 ");JMenuItem niuqu1 = new JMenuItem(" 扭曲 ");niuqu1.addActionListener(new testImage_niuqu1_actionAdapter(this));niuqu.add(niuqu1);niuqu.addSeparator();jmb.add(niuqu);save = new JMenu(" 保存 ");JMenuItem saveas = new JMenuItem(" 另存为 ");saveas.addActionListener(new saveas_actionAdapter(this));save.add(saveas);save.addSeparator();jmb.add(save);move = new JMenu(" 移动 ");JMenuItem lmove = new JMenuItem(" 向左移动 ");lmove.addActionListener(new lmove_actionAdapter(this));move.add(lmove);move.addSeparator();JMenuItem rmove = new JMenuItem(" 向右移动 ");rmove.addActionListener(new rmove_actionAdapter(this));move.add(rmove);move.addSeparator();JMenuItem cmove = new JMenuItem(" 居中移动 ");cmove.addActionListener(new cmove_actionAdapter(this));move.add(cmove);move.addSeparator();JMenuItem umove = new JMenuItem(" 向上移动 ");umove.addActionListener(new umove_actionAdapter(this));move.add(umove);move.addSeparator();JMenuItem dmove = new JMenuItem(" 向下移动 ");dmove.addActionListener(new dmove_actionAdapter(this));move.add(dmove);move.addSeparator();jmb.add(move);// zyf/view = new JMenu(" 详情 ");JMenuItem banben = new JMenuItem(" 版本说明 ");banben.addActionListener(new banben_actionAdapter(this));view.add(banben);jmb.add(view);// zyfthis.setSize(800, 600);this.setJMenuBar(jmb);jLabel1 = new JLabel("", JLabel.CENTER);JScrollPane pane = new JScrollPane(jLabel1);this.add(pane, borderLayout1.CENTER);this.setVisible(true);//设置窗口居中this.setLocationRelativeTo(null);}public static void main(String[] args) {ImageProcessing testImage1 = new ImageProcessing(" 基于Java语言的的可视化图像处理软件 ");testImage1.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}
}

四、其它

1.其他系统实现

Java+Swing实现学生选课管理系统
Java+Swing图书管理系统
Java+Swing学生信息管理系统

2.获取源码

Java+Swing可视化图像处理软件

相关文章:

Java+Swing可视化图像处理软件

JavaSwing可视化图像处理软件 一、系统介绍二、功能展示1.图片裁剪2.图片缩放3.图片旋转4.图像灰度处理5.图像变形6.图像扭曲7.图像移动 三、系统实现1.ImageProcessing.java 四、其它1.其他系统实现2.获取源码 一、系统介绍 该系统实现了图片裁剪、缩放、旋转、图像灰度处理、…...

RDD转换算子:【mapValues、mapPartitions】

文章目录 1、mapValues算子功能语法举例 2、mapPartitions算子功能语法举例 1、mapValues算子 功能 针对二元组KV类型的RDD,对RDD中每个元素的Value进行map处理,结果放入一个新的RDD中 语法 def mapValues(self: RDD[Tuple[K,V]], f: (V) -> U) -…...

数组和指针的复杂关系

C语言中指针和数组的关系似乎很“纠结”,让人爱恨交织。本文试图帮助读者理清它们之间的复杂关系! 数组名的理解 数组元素在内存中是连续存放的,在C语言中,数组名有特殊的含义,它表示数组首元素的地址。因此&#xf…...

Linux系统I/O调优实例

文章目录 一 、资源限制二、测试硬盘速度: 一 、资源限制 限制用户资源配置文件:/etc/security/limits.conf [rootxuegod63 ~]# vim /etc/security/limits.conf 每行的格式: 用户名/用户组名 类型(软限制/硬限制) 选项 值 通常我们在服务器…...

记录Ubuntu OS的异常

PS: 参加过408改卷的ZJU ghsongzju.edu.cn 开启嘲讽: 你们知道408有多简单吗,操作系统真实水平自己知道就行~~ dmesg dmesg 是一个用于显示内核环形缓冲区消息的命令,主要用于查看系统启动时的消息、驱动程序加载信息、硬件错误…...

Vue 3 单元测试与E2E测试

在Vue 3应用的开发过程中,测试是一个至关重要的环节。它不仅能够确保代码的正确性,还能在后续的代码重构和升级过程中提供安全保障。本文将深入探讨Vue 3的单元测试(Unit Testing)和端到端测试(End-to-End Testing, E2…...

猫用空气净化器哪个牌子好?求除毛好、噪音小的宠物空气净化器!

换毛季家里孩子不省心,疯狂掉落的猫毛和空气中乱飞的浮毛可把我折磨死了。每天下班都要抽出时间来清理,不然这个家就不能要了。猫毛靠我自己可以打扫,浮毛还得借助宠物空气净化器这种专业工具。所以我最近着手做功课,打算入手一台…...

第十九课 Vue组件中的方法

Vue组件中的方法 组件中的方法拓展与实例对象中的方法拓展类似 <div id"app"><test></test> </div> <script>Vue.component(test, {template: <input type"button" value"这是个按钮组件" click"fun()…...

【JavaScript】V8,Nodejs 与浏览器

V8 V8 是一个 JavaScript engine&#xff0c;负责编译并执行 JavaScript 源代码&#xff0c;处理对象的内存分配&#xff0c;并对不再需要的对象进行垃圾收集。 V8 包含两个主要组件&#xff1a; Memory Heap&#xff1a;负责存储分配。 Call Stack&#xff1a;代码执行时&am…...

内存马浅析

之前在jianshu上写了很多博客&#xff0c;但是安全相关的最近很多都被锁了。所以准备陆陆续续转到csdn来。内存马前几年一直是个很热门的漏洞攻击手段&#xff0c;因为相对于落地的木马&#xff0c;无文件攻击的内存马隐蔽性、持久性更强&#xff0c;适用的漏洞场景也更多。 J…...

聊一聊Elasticsearch的基本原理与形成机制

1、搜索引擎的基本原理 通常搜索引擎包括&#xff1a;数据采集、文本分析、索引存储、搜索等模块&#xff0c;它们之间的协作流程如下图&#xff1a; 数据采集模块负责采集需要搜索的数据源。 文本分析模块是将结构化数据中的长文本切分成有实际意义的词&#xff0c;这样用户…...

应急救援无人车:用科技守护安全!

一、核心功能 快速进入危险区域&#xff1a; 救援无人车能够迅速进入地震、火灾、洪水等自然灾害或重大事故的现场&#xff0c;这些区域往往对人类救援人员构成极大威胁。 通过自主导航和环境感知技术&#xff0c;无人车能够避开危险区域&#xff0c;确保自身安全的同时&…...

详解Java之Spring MVC篇二

目录 获取Cookie/Session 理解Cookie 理解Session Cookie和Session的区别 获取Cookie 获取Session 获取Header 获取User-Agent 获取Cookie/Session 理解Cookie HTTP协议自身是“无状态”协议&#xff0c;但是在实际开发中&#xff0c;我们很多时候是需要知道请求之间的…...

flutter鸿蒙next 使用 InheritedWidget 实现跨 Widget 传递状态

在 Flutter 中&#xff0c;状态管理是开发过程中一个至关重要的部分。Flutter 提供了多种方式来实现组件间的状态传递&#xff0c;其中一种比较底层的方式是使用 InheritedWidget。虽然 InheritedWidget 主要用于将数据传递给其子树中的小部件&#xff0c;但它也是许多更高级状…...

计算机的错误计算(一百四十六)

摘要 探讨 MATLAB 中正切函数 tan(x)、余切函数 cot(x) 关于 附近数的计算精度问题。 例1. 已知 计算 直接贴图吧&#xff1a; 另外&#xff0c;16位的正确值分别为 -0.7837941516239115e10、-0.1275845192169577e-9、0.4782331334117711e7 与 0.2091030357653982e-…...

国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案

一、方案背景 在当代建筑施工领域&#xff0c;安全监管和防盗监控是保障工程顺利进行和资产安全的关键措施。随着科技进步&#xff0c;传统的监控系统已不足以应对现代工地的安全挑战。因此&#xff0c;基于国标GB28181视频平台EasyCVR的工地防盗视频监控系统应运而生&#xf…...

CUDA系统学习之一软件堆栈架构

一、CPU与GPU体系架构 计算单元分布 CPU: 少量强大的ALU(算术逻辑单元)&#xff0c;通常4-8个核心GPU: 大量小型ALU&#xff0c;成百上千个计算核心特点&#xff1a;GPU更适合并行计算&#xff0c;可以同时处理大量数据控制单元(Control) CPU: 较大的控制单元&#xff0c;复杂的…...

SpringBoot项目中替换指定版本的tomcat

需求&#xff1a;项目使用的SpringBoot框架&#xff0c;因低版本的tomcat的有安全漏洞&#xff0c;根据安全要求需要将项目的tomcat版本升级到9.0.89以上版本。 解决办法&#xff1a; 1、在pom.xml中排除SpringBoot的默认tomcat依赖&#xff1b; <dependency><groupId…...

【5.10】指针算法-快慢指针将有序链表转二叉搜索树

一、题目 给定一个单链表&#xff0c;其中的 元素按升序排序 &#xff0c;将其转换为 高度平衡的二叉搜索树 。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表&#xff1a; [ -10 , -3 , 0 , …...

机器学习—前向传播的一般实现

可以写一个函数来实现一个密集的层&#xff0c;那是神经网络的单层&#xff0c;所以定义稠密函数&#xff0c;它将上一层的激活作为输入以及给定层神经元的参数w和b。看下边图片所展示的例子&#xff0c;把所有这些权重向量堆叠成一个矩阵&#xff0c;wnp.array([[1,-3,5][2,4,…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...