首页 > 编程语言 >Java+Swing可视化图像处理软件

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

时间:2023-02-07 09:24:26浏览次数:44  
标签:Java java Swing new add 可视化 actionAdapter JMenuItem import

@

目录

一、系统介绍

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

二、功能展示

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);
		// zyf
		this.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);
			}
		});
	}
}

四、获取源码

请联系QQ:2080866767

标签:Java,java,Swing,new,add,可视化,actionAdapter,JMenuItem,import
From: https://www.cnblogs.com/Timi2019/p/16982294.html

相关文章

  • Java+Swing 聊天室
    @目录一、系统介绍二、系统展示1.发送消息2.清屏三、系统实现四、获取源码一、系统介绍本系统实现了简单的聊天室功能:发送消息、清屏、退出系统。二、系统展示1.发送消......
  • Java 使用递归构建树
    publicclassMenuTree1{/***构建结束的树*/privatestaticList<Menu>menuList;/***构建树*@parammenuId树的根节点id0:代表顶级......
  • java8新特性之List处理
    1.集合中获取指定的一个属性值List<String>items=li.stream().map(ScdCostChargeItemEntity::getItem).collect(Collectors.toList()); 2.集合分组Map<String,......
  • Java泛型中<?>和<T>的区别浅析
    https://www.jb51.net/article/270336.htm一、定义1、T代表一种类型可以加在类上,也可以加在方法上1)T加在类上123classSuperClass<A>{    //tod......
  • java8中时间的各种转换(LocalDateTime)
      java8中时间的各种转换(LocalDateTime)1.将LocalDateTime转为自定义的时间格式的字符串publicstaticStringgetDateTimeAsString(LocalDateTimelocalDateTime......
  • 读Java实战(第二版)笔记03_引入和使用流
    1. 流1.1. 以声明性方式处理数据集合1.2. 通过查询语句来表达,而不是临时编写一个实现1.3. 遍历数据集的高级迭代器1.4. 透明地并行处理1.5. 从支持数据处理操......
  • 通俗易懂的理解java泛型
    泛型是JAVA1.5版本之后引入的一个新特性,它允许在定义类、接口和方法的时候使用类型参数,这些类型参数将在使用时确定。泛型的引入,使得JAVA具有了更好的代码复用性,更好的类......
  • Java中保留两位小数之format
    String.format仅限double类型可用int类型会报错doubled1=6.6666;System.out.println(String.format("%.2f",d1));//设置保留两位小数注意:没有小数位或者小数位不够你......
  • R语言豆瓣数据文本挖掘 神经网络、词云可视化和交叉验证
    全文链接:http://tecdat.cn/?p=31544原文出处:拓端数据部落公众号在网络技术高速发展的背景下,信息纷乱繁杂,如何能够获得需要的文本信息,成了许多企业或组织关注的问题。......
  • java基础
    JAVA基础注释单行注释////这代表单行注释多行注释/**//*多行注释可以在连续多行编写注释*/文档注释/***//***这是文档注释*/标识符只能以字母、......