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

📄 j2kguidecoder.java

📁 jpeg2000编解码
💻 JAVA
字号:
package gui;import javax.swing.event.*;import java.awt.event.*;import javax.swing.*;import java.text.*;import java.awt.*;import java.io.*;import cryptix.provider.rsa.*;import gui.rsa.*;import jj2000.j2k.decoder.*;import jj2000.j2k.util.*;public class J2KGuiDecoder implements ActionListener, ChangeListener {    private Main mainFrame = null;    private File inFile = null;    private OpenImage oi;    private JDesktopPane desktop;    private int width, height;    /** Simple decoding options components */    private JDialog simpDecOptDialog;    private DecimalFormat f = new DecimalFormat("##0.000");    private static int decSliderPrec = 1000;    private double maxRate;    private JTextField decRateField;    private JRadioButton decParsOn, decParsOff;    public JButton decOptOkBut;    private JButton decOptCancelBut, decOptAdvancedBut;    private JSlider decRateSlider;        /** Advanced decoding options components */    private JDialog advDecOptDialog;    public JButton decOkBut;    private JButton decDefBut, decCancelBut;    private JCheckBox showDecInf, decResChkBox, csIgnoreBox;    private JRadioButton cerOn, cerOff, cverberOn;    private JRadioButton cverberOff, noRoiOn, noRoiOff;    private JRadioButton codeStrInfoOn, codeStrInfoOff;    private JTextField decResTf;    /** Security options */    private JTextField selectedKeyTF;    private RawRSAPublicKey rsaPubKey;    private RSASupport rsaSupport;    /** Class constructor */    public J2KGuiDecoder(Main mainFrame,JDesktopPane desktop, OpenImage oi,                          File inFile, int width, int height) {        this.mainFrame = mainFrame;        this.desktop = desktop;        this.inFile = inFile;        this.oi = oi;        this.width = width;        this.height = height;	rsaSupport = mainFrame.getRSASupport();    }    public void start() {        createSimpleGui();        simpDecOptDialog.setVisible(true);    }    public double getRate() {        return (new Double(decRateField.getText())).doubleValue();    }    /** Create dialog box for simple decoding options */    private void createSimpleGui() {        // Open JDialog for simple decoding options        simpDecOptDialog = new JDialog(mainFrame,"Decoding rate");        JPanel simpDecOptPan = new JPanel(new GridLayout(3,1));                // Rate option        JPanel decRatePan = new JPanel();        maxRate = inFile.length()*8d/width/height;        decRateSlider = new JSlider(JSlider.HORIZONTAL,0,                                     (int)(maxRate*decSliderPrec),                                     (int)(maxRate*decSliderPrec));        decRatePan.add(decRateSlider);        decRateSlider.addChangeListener(this);        decRateField = new JTextField(f.format(maxRate),5);        decRateField.addActionListener(this);        decRatePan.add(decRateField);	        decRatePan.add(new JLabel("kB"));        simpDecOptPan.add(decRatePan);                // Truncation/parsing mode        JPanel decTruncPan = new JPanel();        ButtonGroup decParsGrp = new ButtonGroup();        decParsOn = new JRadioButton("parsing",true);        decParsGrp.add(decParsOn);        decTruncPan.add(decParsOn);        decParsOff = new JRadioButton("truncation",false);        decParsGrp.add(decParsOff);        decTruncPan.add(decParsOff);        simpDecOptPan.add(decTruncPan);                // Confirmation buttons        JPanel decConfirmPan = new JPanel();        decOptOkBut = new JButton("OK");        decOptOkBut.addActionListener(oi);        decConfirmPan.add(decOptOkBut);        decOptCancelBut = new JButton("Cancel");        decOptCancelBut.addActionListener(this);        decConfirmPan.add(decOptCancelBut);        decOptAdvancedBut = new JButton("Advanced...");        decOptAdvancedBut.addActionListener(this);        decConfirmPan.add(decOptAdvancedBut);        simpDecOptPan.add(decConfirmPan);                simpDecOptDialog.getContentPane().add(simpDecOptPan);        simpDecOptDialog.setModal(true);        simpDecOptDialog.pack();        simpDecOptDialog.setLocationRelativeTo(mainFrame);    }        /**      * Gets simple parameters values, creates the ParameterList instance and     * close all dialog windows      * */    public ParameterList getSimpParameters() {	// Initialize default parameters        ParameterList defpl = new ParameterList();	String[][] param = Decoder.getAllParameters();	for (int i=param.length-1; i>=0; i--) {	    if(param[i][3]!=null)		defpl.put(param[i][0],param[i][3]);        }	// Create parameter list using defaults        ParameterList pl = new ParameterList(defpl);		// Put arguments into ParameterList	double curRate = (new Double(decRateField.getText())).doubleValue();	if(Math.abs(curRate-maxRate)>0.001) {            pl.put("rate",""+decRateField.getText());        }        if(decParsOn.isSelected()) {            pl.put("parsing","on");        } else {            pl.put("parsing","off");        }        pl.put("verbose","off");        simpDecOptDialog.setVisible(false);        simpDecOptDialog = null;                return pl;    }    /**      * Creates a dialog box for advanced decoding options      * */    private void createAdvancedGui() {	advDecOptDialog = new JDialog(mainFrame,"Decoding Parameters");        // Panel for dialog box	JPanel decDialogPane = new JPanel(new BorderLayout());	advDecOptDialog.setContentPane(decDialogPane);		JPanel buttonsPane = new JPanel();	decOkBut = new JButton("OK");	decOkBut.addActionListener(oi);	buttonsPane.add(decOkBut);	decDefBut = new JButton("Default");	decDefBut.addActionListener(this);	buttonsPane.add(decDefBut);	decCancelBut = new JButton("Cancel");	decCancelBut.addActionListener(this);	buttonsPane.add(decCancelBut);	decDialogPane.add(buttonsPane,BorderLayout.SOUTH);		//****** General Options Tab ***********	JPanel genTab = new JPanel(new BorderLayout());	JPanel genTabSuper = new JPanel(new GridLayout(2,1));        // Show decoding info        JPanel showInfPan = new JPanel();        showDecInf = new JCheckBox("Display decoding info",false);        showDecInf.setToolTipText("Show decoding info and warning"+                                  " messages");        showInfPan.add(showDecInf);	// Rate option	JPanel genTabPane2 = new JPanel();	genTabPane2.add(new JLabel("Decoding rate:"));	genTabPane2.add(decRateField);		genTabPane2.add(new JLabel("bpp"));		genTabSuper.add(genTabPane2);        genTabSuper.add(showDecInf);	genTab.add(genTabSuper,BorderLayout.CENTER);		// ****** Advanced Otions Tab *********	JPanel advTab = new JPanel(new BorderLayout());	JPanel advTabSuper = new JPanel(new GridLayout(3,1));	// Parsing option	JPanel advTab2 = new JPanel();	advTab2.add(new JLabel("Parsing:"));	decParsOn = new JRadioButton("on",true);	decParsOff = new JRadioButton("off",false);	ButtonGroup parsingGrp = new ButtonGroup();	parsingGrp.add(decParsOn);	parsingGrp.add(decParsOff);	advTab2.add(decParsOn);	advTab2.add(decParsOff);	advTabSuper.add(advTab2);	// CodeStream Info	JPanel advTab3 = new JPanel();	advTab3.add(new JLabel("Codestream Info:"));	codeStrInfoOn = new JRadioButton("on",false);	codeStrInfoOff = new JRadioButton("off",true);	ButtonGroup codeStrInfoGrp = new ButtonGroup();	codeStrInfoGrp.add(codeStrInfoOn);	codeStrInfoGrp.add(codeStrInfoOff);	advTab3.add(codeStrInfoOn);	advTab3.add(codeStrInfoOff);	advTabSuper.add(advTab3);	//resolution level option	JPanel advTab4 = new JPanel();	decResChkBox = new JCheckBox("Resolution level:",false);	advTab4.add(decResChkBox);	decResTf = new JTextField("",5);	advTab4.add(decResTf);	advTabSuper.add(advTab4);	advTab.add(advTabSuper,BorderLayout.NORTH);		//******* Entropy Decoding option *******	JPanel entropyDecTab = new JPanel(new BorderLayout());	JPanel entrDecSuper = new JPanel(new GridLayout(2,1));		//error detecttion option	JPanel entrDec1 = new JPanel();	entrDec1.add(new JLabel("Detect synchronization errors:"));	cerOn = new JRadioButton("on",true);	cerOff = new JRadioButton("off",false);	ButtonGroup cerGrp = new ButtonGroup();	cerGrp.add(cerOn);	cerGrp.add(cerOff);	entrDec1.add(cerOn);	entrDec1.add(cerOff);	entrDecSuper.add(entrDec1);	//cverber option	JPanel entrDec2 = new JPanel();	entrDec2.add(new JLabel("Display synchronization errors:"));	cverberOn = new JRadioButton("on",true);	cverberOff = new JRadioButton("off",false);	ButtonGroup cverberGrp = new ButtonGroup();	cverberGrp.add(cverberOn);	cverberGrp.add(cverberOff);	entrDec2.add(cverberOn);	entrDec2.add(cverberOff);	entrDecSuper.add(entrDec2);		entropyDecTab.add(entrDecSuper,BorderLayout.NORTH);	//********* Dec ROI ********	JPanel decROITab = new JPanel(new BorderLayout());	JPanel noRoiPan = new JPanel();	noRoiPan.add(new JLabel("Process ROI : "));	noRoiOn = new JRadioButton("on",true);	noRoiOff = new JRadioButton("off",false);	ButtonGroup noRoiGrp = new ButtonGroup();	noRoiGrp.add(noRoiOn);	noRoiGrp.add(noRoiOff);	noRoiPan.add(noRoiOn);	noRoiPan.add(noRoiOff);	decROITab.add(noRoiPan,BorderLayout.CENTER);	// *************** Color space ***************	JPanel csTab = new JPanel();	csIgnoreBox = new JCheckBox("Ignore color space information");	csTab.add(csIgnoreBox);	// *************** Security ***************	JPanel secTab = new JPanel();	secTab.add(new JLabel("Public key"));	selectedKeyTF = new JTextField("",10);	rsaPubKey = rsaSupport.getRawRSAPubKey();	selectedKeyTF.setText(rsaSupport.getPubKeyName());	selectedKeyTF.setEnabled(false);	secTab.add(selectedKeyTF);	JButton selectPubKey = new JButton("Select Key");	selectPubKey.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent e) {		    rsaSupport.createMngKeyUI(mainFrame,RSASupport.					      DISPLAY_PUBLIC);		    rsaPubKey = rsaSupport.getRawRSAPubKey();		    selectedKeyTF.setText(rsaSupport.getPubKeyName());		}	    });	secTab.add(selectPubKey);// 	JPanel secTab = new JPanel();// 	secTab.add(new JLabel("Public key:"));// 	secSeedTF = new JTextField("-1",5);// 	secTab.add(secSeedTF);		// *************** Tabbed pane ***************	JTabbedPane tabPane = new JTabbedPane();			tabPane.add("General",genTab);	tabPane.add("Advanced",advTab);	tabPane.add("Entropy Coder",entropyDecTab);	tabPane.add("Region of Interest",decROITab);	tabPane.add("Colorspace",csTab);	tabPane.add("Security",secTab);	decDialogPane.add(tabPane,BorderLayout.CENTER);	advDecOptDialog.setModal(true);	advDecOptDialog.pack();        advDecOptDialog.setLocationRelativeTo(mainFrame);    }    /**      * Gets advanced parameters values, creates the ParameterList instance and     * close all dialog windows      * */    public ParameterList getAdvParameters() {	// Initialize default parameters        ParameterList defpl = new ParameterList();	String[][] param = Decoder.getAllParameters();	for (int i=param.length-1; i>=0; i--) {	    if(param[i][3]!=null)		defpl.put(param[i][0],param[i][3]);        }	// Create parameter list using defaults        ParameterList pl = new ParameterList(defpl);		// Put arguments into ParameterList        pl.put("rate",""+decRateField.getText());        if(showDecInf.isSelected()) {            pl.put("verbose","on");        }        if(decParsOn.isSelected()) {            pl.put("parsing","on");        } else {            pl.put("parsing","off");        }        if(codeStrInfoOn.isSelected()) {            pl.put("cdstr_info","on");            pl.put("verbose","on");        }        if(decResChkBox.isSelected()) {            pl.put("res",decResTf.getText());        }        if(cerOn.isSelected()) {            pl.put("Cer","on");        }        if(cverberOn.isSelected()) {            pl.put("Cverber","on");        }        if(noRoiOn.isSelected()) {            pl.put("Rno_roi","on");        }	if(csIgnoreBox.isSelected()) {	    pl.put("nocolorspace", "on");	}	pl.put("debug","off");	if(rsaPubKey!=null) {	    pl.put("Spublic_key", rsaPubKey.getExponent().toString()+" "		   +rsaPubKey.getModulus().toString());	}        advDecOptDialog.setVisible(false);        advDecOptDialog = null;                return pl;    }    public void actionPerformed(ActionEvent e) {	Object o = e.getSource();        if(o==decRateField) { // Modification of the decoding bit-rate            // in the text field            if(decRateSlider!=null) {                int max = decRateSlider.getMaximum();                int min = decRateSlider.getMinimum();                double val = max;                try {                    val = (new Double(decRateField.getText())).doubleValue()*                        decSliderPrec;                } catch(NumberFormatException nfe) {                    decRateSlider.setValue(max);                    decRateField.setText(""+((float)max/decSliderPrec));                }                if(val<min) {                    decRateSlider.setValue(min);                } else if(val>max) {                    decRateSlider.setValue(max);                } else {                    decRateSlider.setValue((int)val);                }            }        } else if(o==decOptCancelBut) { // Cancel simple decoding            simpDecOptDialog.setVisible(false);            simpDecOptDialog = null;        } else if(o==decOptAdvancedBut) { // Request advanced option menu            simpDecOptDialog.setVisible(false);            simpDecOptDialog = null;            createAdvancedGui();            advDecOptDialog.setVisible(true);        } else if(o==decDefBut) { // Default values for advanced options            showDecInf.setSelected(false);	    cerOn.setSelected(true);	    cverberOn.setSelected(true);	    codeStrInfoOff.setSelected(true);	    decParsOn.setSelected(true);	    noRoiOn.setSelected(true);	    decRateField.setText("");	    decResChkBox.setSelected(false);	    decResTf.setText("");        } else if(o==decCancelBut) { // Cancel advanced decoding            advDecOptDialog.setVisible(false);            advDecOptDialog = null;        }    }    /**      * Method handling modification of the sliders values      * */    public void stateChanged(ChangeEvent e) {        double val = (double)decRateSlider.getValue()/decSliderPrec;        decRateField.setText(f.format(val));    }}

⌨️ 快捷键说明

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