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

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

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

一、系统介绍

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

二、功能展示

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学生信息管理系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/53338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Go]-抢购类业务方案

文章目录 要点:1. 抢购/秒杀业务的关键挑战2. 技术方案3.关键实现点4.性能优化建议5.其他考虑因素 细节拆分:1. **高并发处理**2.**限流与防护**3.**库存控制**4. **异步处理**5. **数据一致性**6. **常用架构设计**7. **代码示例**8. 进一步优化9. 注意…

谈一谈MVCC

一 MVCC的定义 MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于数据库管理系统(DBMS)中的并发控制方法,它允许数据库读写操作不加锁地并发执行,从而提高了数据库系统的并发性…

苹果手机突然黑屏打不开怎么办?

苹果手机作为市场上备受欢迎的智能手机之一,其稳定性和流畅性一直备受赞誉。然而,偶尔遇到手机突然黑屏无法打开的情况,也会让不少用户感到困扰。今天,我们就来详细探讨一下苹果手机突然黑屏打不开的解决方法,帮助大家…

echarts 水平柱图 科技风

var category [{ name: "管控", value: 2500 }, { name: "集中式", value: 8000 }, { name: "纳管", value: 3000 }, { name: "纳管", value: 3000 }, { name: "纳管", value: 3000 } ]; // 类别 var total 10000; // 数据…

【RabbitMQ之一:windows环境下安装RabbitMQ】

目录 一、下载并安装Erlang1、下载Erlang2、安装Erlang3、配置环境变量4、验证erlang是否安装成功 二、下载并安装RabbitMQ1、下载RabbitMQ2、安装RabbitMQ3、配置环境变量4、验证RabbitMQ是否安装成功5、启动RabbitMQ服务(安装后服务默认自启动) 三、安…

vue3+ts封装类似于微信消息的组件

组件代码如下&#xff1a; <template><div:class"[voice-message, { sent: isSent, received: !isSent }]":style"{ backgroundColor: backgroundColor }"click"togglePlayback"><!-- isSent为false在左侧&#xff0c;为true在右…

传输层协议UDP

本篇将主要介绍 UDP 协议&#xff0c;介绍了有关 UDP 协议的报头、协议特点、UDP 协议在操作系统中的缓冲区、UDP 协议使用的注意事项&#xff0c;以及有关 UDP 的 Socket 编程程序&#xff0c;同时重点介绍了操作系统对于 UDP 协议报文的管理。 接着介绍了有关端口号的映射。 …

网络编程学习:TCP/IP协议

TCP/IP协议简介 TCP/IP协议包含了一系列的协议&#xff0c;也叫TCP/IP协议族&#xff08;TCP/IP Protocol Suite&#xff0c;或TCP/IP Protocols&#xff09;&#xff0c;简称TCP/IP。 分层结构 为了能够实现不同类型的计算机和不同类型的操作系统之间进行通信&#xff0c;引…

【数据结构-二维前缀和】力扣1504. 统计全 1 子矩形

给你一个 m x n 的二进制矩阵 mat &#xff0c;请你返回有多少个 子矩形 的元素全部都是 1 。 示例 1&#xff1a; 输入&#xff1a;mat [[1,0,1],[1,1,0],[1,1,0]] 输出&#xff1a;13 解释&#xff1a; 有 6 个 1x1 的矩形。 有 2 个 1x2 的矩形。 有 3 个 2x1 的矩形。 有…

ICLR2024: 大视觉语言模型中对象幻觉的分析和缓解

https://arxiv.org/pdf/2310.00754 https://github.com/YiyangZhou/LURE 背景 对象幻觉&#xff1a;生成包含图像中实际不存在的对象的描述 早期的工作试图通过跨不同模式执行细粒度对齐&#xff08;Biten et al.&#xff0c;2022&#xff09;或通过数据增强减少对象共现模…

2024 天池云原生编程挑战赛决赛名单公布,9 月 20 日开启终极答辩

历时 4 个月&#xff0c;2024 天池云原生编程挑战赛决赛名单公布&#xff01; 本届大赛规模创新高&#xff0c;参赛战队达 20000 支&#xff0c; 广覆盖国内外优秀高校和杰出企业&#xff01;吸引了来自北京大学、清华大学等 176 所国内外优秀高校&#xff0c;以及美团、米哈游…

2025年25届必看:如何用Java SpringBoot+Vue搭建大学生成绩量化管理系统?

✍✍计算机毕业编程指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java…

青岛实训 8月21号 day33

1.设置主从从mysql57服务器 1&#xff09;配置主数据库 [rootmsater_5 ~]# systemctl stop filewalld [rootmsater_5 ~]# setenforce 0 [rootmsater_5 ~]# systemctl disable filewalld [rootmsater_5 ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.g…

rancher搭建k8s及jenkins自动化部署

1、准备环境 角色IP用途k8s-rancher-master192.168.3.63master节点k8s-rancher-node01192.168.3.64node节点k8s-rancher-node02192.168.3.66node节点k8s-rancher-server192.168.2.33rancher-server节点注: 服务器名需要配置不同,相同服务器名不能加入node节点 在所有节点进行…

jQuery入门(七)jQuery实现按钮分页

一、分页案例分析 功能分析&#xff1a;使用分页插件&#xff0c;实现分页&#xff0c;效果如下图&#xff1a; 二、实现思路和代码 2.1&#xff09;页面实现分析 1.引入分页插件的样式文件和 js 文件。 2. 定义当前页码和每页显示的条数。(分页必备信息) 3. 调用查询数据…

挂轨巡检机器人在发电厂与煤矿皮带机场景的应用

一、引言 在发电厂和煤矿等重工业领域&#xff0c;皮带机作为关键设备&#xff0c;其运行状态直接关系到生产效率和安全。然而&#xff0c;传统的人工巡检方式不仅效率低下&#xff0c;还存在安全隐患。随着智能巡检技术的不断发展&#xff0c;杭州旗晟智能科技有限公司推出的…

使用mobaxterm连接linux出现连接中断问题

1.问题描述 使用mobaxterm在连接到远程服务器时&#xff0c;如果隔一段时间不进行操作的话&#xff0c;会出现中断连接的现象。 2.解决 为了增强Linux系统的安全性&#xff0c;我们需要在用户输入空闲一段时间后自动断开&#xff0c;这个操作可以由设置TMOUT值来实现。将以下…

HTB-Pennyworth(cve查询 和 exp使用)

前言 各位师傅大家好&#xff0c;我是qmx_07,今天给大家讲解Pennyworth靶场 渗透过程 信息搜集 服务器端口开放了8080http端口 访问网站 服务器使用jenkins cms系统&#xff0c;版本是2.289.1 通过弱口令爆破&#xff0c;账户是root,密码是password 通过命令执行nday 连…

【WPS Excel】复制表格时,提示“图片太大,超过部份将被截去“ 问题

WPS表格 2019版本 升级到 WPS最新版 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 使用最新版就能够解决这个问题&#xff0c;如果仍旧无法解决可以勾选如下配置 重启Excel解决。 请勾选&#xff1a;文件 - 选项 - 编辑 - 不提示且不压缩文件中的图像

vue 踩坑记录

本地开发没有cookie 解决方案 设置代理&#xff0c;并把changeOrigin设为true proxy的changeOrigin如果设置为false&#xff1a;请求头中host仍然是浏览器发送过来的host&#xff1b; 如果设置成true&#xff1a;发送请求头中host会设置成target。 允许axios请求携带cookie等凭…