⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hideinfopanel.java

📁 使用java编写的LSB图像信息隐藏算法演示程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				if (retVal==JFileChooser.APPROVE_OPTION)
				{
					this.targetTxt=jfc.getSelectedFile();
					this.pathFile2.setText(this.targetTxt.getAbsolutePath());
				}
				else this.targetTxt=null;
			}
		}
		
		if(((JButton)e.getSource()).equals(this.bFile3))  //按下的是第三个 选择目标图像文件的按钮,只有隐藏模式有用 
		{		
			int retVal=jfc.showOpenDialog(this);
			if (retVal==JFileChooser.APPROVE_OPTION)
			{
				this.targetBMP=jfc.getSelectedFile();
			//	System.out.println("File name is : " +this.targetBMP.getAbsolutePath());
				this.pathFile3.setText(this.targetBMP.getAbsolutePath());
			}
			else this.targetBMP=null;
		}
		
		if(((JButton)e.getSource()).equals(this.bMode)) //安下的是 切换模式按钮
		{
			if (this.isHideMode)  // Hide2Get  //不同的模式有不同的界面、组件位置,所以要重新设置一堆东西
			{
				this.isHideMode=false;
		//		this.bMode.setText("Get模式");
				this.bFile1.setText("选择待解隐图像");
				this.bFile2.setText("选择目的文本");
				this.bFile3.setEnabled(false);
				this.bFile3.setVisible(false);
				this.tag3.setEnabled(false);
				this.tag3.setVisible(false);
				this.pathFile1.setText("");
				this.pathFile2.setText("");
				this.pathFile3.setText("");
				this.pathFile3.setEnabled(false);
				this.pathFile3.setVisible(false);
				this.bOp.setText("开始提取操作");
				this.status.setText("当前模式:信息提取模式");
				this.originBMP=null;
				this.originTxt=null;
				this.targetBMP=null;
				this.targetTxt=null;
				this.show2.setVisible(false);
				this.show2.setImage(null);
				this.show1.setImage(null);
				this.show1.setBorder(new TitledBorder(new LineBorder(new Color(69,167,116)),"含隐藏信息的图像",TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.DEFAULT_POSITION,new Font("宋体",Font.PLAIN,12),new Color(117,60,27)));
				this.bOp.setBounds(70,200,120,80);
				this.bMode.setBounds(70,310,120,80);
				this.show1.setBounds(330,180,230,230);
				
				this.repaint();
				this.show1.repaint();
				this.show2.repaint();
			}
			else 			//Get2Hide
			{
				this.isHideMode=true;
		//		this.bMode.setText("Hide模式");
				this.bFile1.setText("选择原图像文件");
				this.bFile2.setText("选择待隐藏文本");
				this.bFile3.setEnabled(true);
				this.bFile3.setVisible(true);
				this.tag3.setEnabled(true);
				this.tag3.setVisible(true);
				this.pathFile1.setText("");
				this.pathFile2.setText("");
				this.pathFile3.setText("");
				this.pathFile3.setEnabled(true);
				this.pathFile3.setVisible(true);
				this.bOp.setText("开始隐藏操作");
				this.status.setText("当前模式:信息隐藏模式");
				this.originBMP=null;
				this.originTxt=null;
				this.targetBMP=null;
				this.targetTxt=null;
				this.show2.setVisible(true);
				this.show2.setImage(null);
				this.show1.setImage(null);
				this.show1.setBorder(new TitledBorder(new LineBorder(new Color(69,167,116)),"隐藏前的图像",TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.DEFAULT_POSITION,new Font("宋体",Font.PLAIN,12),new Color(117,60,27)));
				this.show2.setBorder(new TitledBorder(new LineBorder(new Color(69,167,116)),"隐藏后的图像",TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.DEFAULT_POSITION,new Font("宋体",Font.PLAIN,12),new Color(117,60,27)));
				this.show1.setBounds(220,200,230,230);
				this.bOp.setBounds(70,220,120,100);
				this.bMode.setBounds(70,340,120,80);
				this.repaint();
				this.show1.repaint();
				this.show2.repaint();
				
			}
		}
		
		if(((JButton)e.getSource()).equals(this.bOp))  //按下了开始按钮
		{
			if (this.isHideMode)  //看模式来决定什么操作 这是隐藏模式
			{
				//check if valid 
				if (this.originBMP==null || !this.originBMP.exists())
				{
					this.status.setText("提示:源图像文件不存在,请重新指定源图像文件");
					return;  //先看源图像是不是存在
				}
				if (!this.originBMP.getName().substring(this.originBMP.getName().length()-3).toLowerCase().equals("bmp"))
				{
					this.status.setText("提示:源图像文件不是BMP格式,请重新指定");
					return;    //再看源图像是不是bmp文件
				}
				if (this.originTxt==null || !this.originTxt.exists())
				{
					this.status.setText("提示:待隐藏文本文件不存在,请重新指定");
					return;  //看源文本是不是存在
				}
				if (this.targetBMP==null)
				{
					this.status.setText("提示:请指定目标图像文件");
					return;	    //看目的图像是不是已经指定
				}
				if (!this.targetBMP.getName().substring(this.targetBMP.getName().length()-3).toLowerCase().equals("bmp"))
				{
					this.status.setText("提示:不是BMP格式,请重新指定目的图像文件");
					return;//看目的图像是不是BMP
				}
				
				int result=InfoHiding.hide(this.originBMP,this.originTxt,this.targetBMP);
				//进行隐藏操作
				switch (result)
				{//查看返回信息,根据返回的int值来确定程序运行是不是成功 发生什么错误
				case 0: 
					this.status.setText("成功:已完成信息隐藏操作");
					this.show2.setImage(new BMP(new File(this.pathFile3.getText())).getImage());
					this.show2.repaint();
					break;
				case 1: 
					this.status.setText("提示:源文件和目标文件不能是同一个文件,请重新指定");
					break;
				case 23:
					this.status.setText("提示:不能打开目的文件,请重新指定目的文件");
					break;
				case 28: 
					this.status.setText("提示:读取源图像头部信息失败,请重新指定源图像");
					break;
				case 31: 
					this.status.setText("提示:源图像不是BMP文件,请重新指定源图像");
					break;
				case 32: 
					this.status.setText("提示:源图像文件已包含隐藏信息,请重新指定源图像");
					break;
				case 51: 
					this.status.setText("提示:源图像容量不足以隐藏指定文件,请重新指定源图像");
					break;
				case 33: 
					this.status.setText("提示:源图像经过压缩,请重新指定源图像");
					break;
				case 34: 
					this.status.setText("提示:颜色位数不在支持范围,请重新指定源图像");
					break;
					
				default:
					this.status.setText("错误号:"+result);
					break;
				}
				
				this.originBMP=null;
				this.pathFile1.setText("");
				this.originTxt=null;
				this.pathFile2.setText("");
				this.targetBMP=null;
				this.pathFile3.setText(""); //操作完成后 清除不必要的量
				
			}
			else    // 提取操作  同上
			{
				if (this.originBMP==null || !this.originBMP.exists())
				{
					this.status.setText("提示:源图像文件不存在,请重新指定源图像文件");
					return;
				}
				if (!this.originBMP.getName().substring(this.originBMP.getName().length()-3).toLowerCase().equals("bmp"))
				{
					this.status.setText("提示:目标图像不是BMP格式,请重新指定源图像文件");
					return;
				}
				if (this.targetTxt==null)
				{
					this.status.setText("提示:请指定目标文本文件");
					return;
				}
				int result=InfoGetting.get(this.originBMP,this.targetTxt);
				switch (result)
				{
				case 0: 
					this.status.setText("成功:已完成信息提取操作");
					break;
				case 1: 
					this.status.setText("提示:源文件和目标文件不能是同一个文件,请重新指定");
					break;
				case 28: 
					this.status.setText("提示:读取源图像头部信息失败,请重新指定源图像");
					break;
				case 31: 
					this.status.setText("提示:源图像不是BMP文件,请重新指定源图像");
					break;
				case 32: 
					this.status.setText("提示:源图像文件不包含隐藏信息,请重新指定源图像");
					break;
				case 33: 
					this.status.setText("提示:源图像经过压缩,请重新指定源图像");
					break;
				case 34: 
					this.status.setText("提示:颜色位数不在支持范围,请重新指定源图像");
					break;	
				case 51: 
					this.status.setText("提示:源图像容量不足以隐藏指定文件,请重新指定源图像");
					break;
				case 23:
					this.status.setText("提示:不能打开目的文件,请重新指定目的文件");
					break;
				case 43:
					this.status.setText("提示:向目的文件写入时发生错误");
					break;
				default:
					this.status.setText("错误号:"+result);
					break;
				}	
				this.originBMP=null;
				this.pathFile1.setText("");
				this.targetTxt=null;
				this.pathFile2.setText("");
				this.pathFile3.setText("");
				
			}	
		}
	}//	
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		g.drawImage(im,0,0,800,500,this);   //绘制背景
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -