package wwc.com;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.*;
import java.awt.event.* ;
import java.awt.*;
import javax.swing.JFileChooser;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.DropMode;
import javax.swing.JScrollPane;
import javax.swing.JScrollBar;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.*;
public class AudioWaterMark extends JFrame{
private JFrame frame;
private JButton button;
private JButton button_1;
AudioInputStream reader = null;
public static byte[] array=null;
AudioFormat format=null;
private JTextField textField;
int[] zhiwen=new int[100];
double[][] array6=new double[400][400];
double[][] array61=new double[400][400];
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
AudioWaterMark frame = new AudioWaterMark();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public AudioWaterMark() {
/**
* Initialize the contents of the frame.
*/
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(200, 100, 980, 600);
setLocationRelativeTo(null);
this.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(0, 0, 0, 0);
this.getContentPane().add(panel);
button = new JButton("\u6253\u5F00\u6587\u4EF6");
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
open();
}
});
button.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent arg0) {
open();
}
});
button.setBounds(59, 60, 93, 23);
this.getContentPane().add(button);
button_1 = new JButton("\u4FDD\u5B58\u6587\u4EF6");
button_1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
save();
}
});
button_1.setBounds(531, 196, 93, 23);
this.getContentPane().add(button_1);
textField = new JTextField();
textField.setBounds(162, 61, 798, 21);
this.getContentPane().add(textField);
textField.setColumns(10);
JButton button_3 = new JButton("\u786E\u5B9A");
button_3.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
boolean tag=true;
String t= textField.getText();
char [] g = t.toCharArray();
//String[] s = t.split("");
zhiwen = new int[g.length];
int canshu=0;
try{
canshu =Integer.parseInt(textField_2.getText());
System.out.print(canshu);//////////
}catch(Exception e){
JOptionPane.showMessageDialog(null, "嵌入参数为整数","警告", JOptionPane.ERROR_MESSAGE);
tag=false;
}
for(int i=0;i<g.length;i++)
{
if(g[i]=='0')
zhiwen[i]=0 ;
else if(g[i]=='1') zhiwen[i]=1;
else {tag=false;
JOptionPane.showMessageDialog(null, "指纹格式为0,1序列,例如10101111000","警告", JOptionPane.ERROR_MESSAGE);
break;
}
}
if(tag){
array=qianru.Qianru(array,zhiwen,canshu);
System.out.println("。。。。嵌入成功。。。。。"); System.out.print(canshu);
JOptionPane.showMessageDialog(null, " 嵌入完成 ", " 提示 ", JOptionPane.INFORMATION_MESSAGE);
}
}
});
button_3.setBounds(531, 140, 93, 23);
this.getContentPane().add(button_3);
JLabel label = new JLabel("\u8F93\u5165\u6307\u7EB9");
label.setBounds(460, 35, 54, 15);
this.getContentPane().add(label);
JLabel label_1 = new JLabel("\u6C34\u5370\u5D4C\u5165");
label_1.setBounds(10, 10, 54, 15);
this.getContentPane().add(label_1);
JLabel label_2 = new JLabel("\u6C34\u5370\u63D0\u53D6");
label_2.setBounds(10, 257, 54, 15);
this.getContentPane().add(label_2);
JButton button_2 = new JButton("\u63D0\u53D6");
button_2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
int countor=0;
int countor1=0;
int w=0;
TwoWaveTransform.dwt2(array6,2) ;
double[][] l = TwoWaveTransform.lResult ;
TwoWaveTransform.dwt2(array61,2) ;
double[][] l1 = TwoWaveTransform.lResult ;
int[] suiji=Ran.ran1(Integer.parseInt(textField_3.getText()),100 );//suijishu
for(int i = 0; i< 10 ; i ++) {
for(int j = 0; j < 10; j ++) {
double[][] blk1 = new double[8][8];
double[][] blk2 = new double[8][8];
//对原始图像8 * 8 分块
for(int m=0; m<8; m++) {
for(int n=0; n<8; n++) {
blk1[m][n] = l[8 * i + m][8 * j + n] ;
blk2[m][n] = l1[8 * i + m][8 * j + n] ;
}
}
double[][] dBlk1 = FDCT.FDCT(blk1) ;
double[][] dBlk2 = FDCT.FDCT(blk2) ;
int[] p=Ran.ran2(suiji[w]);
if(dBlk1[p[0]][2]-dBlk2[p[0]][2]>2) countor+=5;
if(dBlk1[p[1]][3]-dBlk2[p[1]][3]>2) countor+=5;
if(dBlk1[p[2]][4]-dBlk2[p[2]][4]>2) countor+=5;
if(dBlk1[p[3]][5]-dBlk2[p[3]][5]>2) countor+=5;
if(dBlk1[p[4]][6] -dBlk2[p[4]][6] >2) countor+=5;
if(dBlk1[p[0]][2]-dBlk2[p[0]][2]<-2) countor1+=5;
if(dBlk1[p[1]][3]-dBlk2[p[1]][3]<-2) countor1+=5;
if(dBlk1[p[2]][4]-dBlk2[p[2]][4]<-2) countor1+=5;
if(dBlk1[p[3]][5]-dBlk2[p[3]][5]<-2) countor1+=5;
if(dBlk1[p[4]][6] -dBlk2[p[4]][6] <-2) countor1+=5;
if(countor>15)
{zhiwen[w] = 0; w++ ;}
if(countor1>15)
{ zhiwen[w] = 1;w++; }
countor=0;
countor1=0;
}
}
String str=new String();
for(int i=0;i<w;i++)
str+=zhiwen[i];
textField_1.setText(str);
System.out.println("提取验证");
System.out.print(str);
}
});
button_2.setBounds(531, 472, 93, 23);
this.getContentPane().add(button_2);
textField_1 = new JTextField();
textField_1.setBounds(162, 391, 798, 21);
this.getContentPane().add(textField_1);
textField_1.setColumns(10);
JButton button_4 = new JButton("\u6C34\u5370\u6587\u4EF6");
button_4.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
open1();
}
});
button_4.setBounds(59, 319, 93, 23);
this.getContentPane().add(button_4, BorderLayout.WEST);
JButton button_5 = new JButton("\u6E90\u6587\u4EF6");
button_5.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
open2();
}
});
button_5.setBounds(59, 390, 93, 23);
this.getContentPane().add(butto
没有合适的资源?快使用搜索试试~ 我知道了~
java音频水印
共37个文件
class:26个
java:8个
classpath:1个
需积分: 22 26 下载量 67 浏览量
2014-04-15
15:01:45
上传
评论 2
收藏 46KB ZIP 举报
温馨提示
音频水印 java实现 水印载体wav 水印为变长01序列 算法涉及到dct dft
资源推荐
资源详情
资源评论
收起资源包目录
yinpin.zip (37个子文件)
yinpin
.project 382B
src
wwc
com
TwoWaveTransform.java 4KB
Ran.java 640B
qianru.java 3KB
FDCT.java 5KB
AudioWaterMark.java 12KB
OneWaveTransform.java 2KB
MathTool.java 5KB
WaterMarkPanel.java 12KB
.settings
org.eclipse.jdt.core.prefs 598B
.classpath 301B
bin
wwc
com
qianru.class 3KB
WaterMarkPanel$1.class 1KB
WaterMarkPanel$6.class 3KB
AudioWaterMark$2.class 658B
IFDCT.class 2KB
AudioWaterMark$3.class 650B
WaterMarkPanel.class 6KB
AudioWaterMark$8.class 656B
DCT.class 326B
WaterMarkPanel$8.class 656B
WaterMarkPanel$2.class 658B
WaterMarkPanel$3.class 650B
OneWaveTransform.class 2KB
AudioWaterMark$1.class 749B
AudioWaterMark$7.class 656B
AudioWaterMark$5.class 2KB
WaterMarkPanel$4.class 658B
WaterMarkPanel$7.class 656B
Ran.class 759B
AudioWaterMark$4.class 658B
WaterMarkPanel$5.class 2KB
FDCT.class 2KB
AudioWaterMark.class 7KB
TwoWaveTransform.class 3KB
MathTool.class 4KB
AudioWaterMark$6.class 3KB
共 37 条
- 1
资源评论
u012609712
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功