当前位置: 首页 > 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,…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...