亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? openimage.java

?? jpeg2000編解碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package gui;import javax.swing.event.*;import java.awt.image.*;import java.awt.event.*;import javax.swing.*;import java.text.*;import java.awt.*;import java.io.*;import jj2000.j2k.quantization.dequantizer.*;import jj2000.j2k.image.invcomptransf.*;import jj2000.j2k.wavelet.synthesis.*;import jj2000.j2k.fileformat.reader.*;import jj2000.j2k.codestream.reader.*;import jj2000.j2k.entropy.decoder.*;import jj2000.j2k.image.input.*;import jj2000.j2k.codestream.*;import jj2000.j2k.decoder.*;import jj2000.j2k.image.*;import jj2000.j2k.util.*;import jj2000.j2k.io.*;import jj2000.disp.*;import colorspace.*;import com.sun.image.codec.jpeg.*;/** Class to open and display all supported image types */public class OpenImage     implements Runnable, Markers, ActionListener, ThreadSurvey {    /** Reference to the temporary raw output file */    private File tmpDecFile = null;    /** Reference to the decoder instance (for JPEG 2000 files) */    private Decoder dec = null;    /** Format float for display (3 fractionnal digits) */    private static final DecimalFormat df = new DecimalFormat("##0.000");    /** Initial directory to open images */    private static File curDir = new File(System.getProperty("user.home"));    /** Reference to the main frame */    private Main mainFrame;    /** Reference to the main frame's desktop */    private JDesktopPane desktop = null;    /** Reference to the J2KGuiDecoder instance */    private J2KGuiDecoder j2kdecoder;    /** Image created from the file */    private Image image = null;    /** Source file used to create the image */    private File inFile = null;    /** File with decoded data (PPM or PPM) */    private File rawFile = null;    /** Number of components in the codestream (when it's needed) */    private int ncCod = 1;    /** Number of components in the decoded image */    private int ncImg = 1;    /** Bit-depth of each component in the image */    private int[] depth =  {8};    /** Whether or not pgx output file is needed (i.e. one component     * at least has a bit-depth greater than 8) */    private boolean pgxNeeded = false;    /** Input image width */    private int width = 0;    /** Input image height */    private int height = 0;    /** Input image type */    private int fileType;    /** Bit-rate of the source file */    private double rate;    /** Raw images file filter description */    private final static String rawImgDesc = "Raw images .pgm, .ppm, .pgx";    /** Raw images files supported extensions */    private final static String[] rawext = { "pgm","ppm", "pgx" };    /** JPEG 2000 file filter description */    private final static String jpeg2kDesc = "JPEG 2000 images .j2k .jpc .jp2";    /** JPEG 2000 files supported extensions */    private final static String[] j2kext = { "j2k", "jpc", "jp2"};    /** JPEG files filter description */    private final static String jpgDesc = "JPEG images .jpg";    /** JPEG images supported extensions */    private final static String[] jpgext = {"jpg"};    /** Input image is JPEG */    public static final int FILE_TYPE_JPEG = 1;    /** Input image is PGM */    public static final int FILE_TYPE_PGM = 2;    /** Input image is PPM */    public static final int FILE_TYPE_PPM = 3;    /** Input image is PGX */    public static final int FILE_TYPE_PGX = 4;    /** Input image is JPEG 2000 */    public static final int FILE_TYPE_JPEG2000 = 5;    /** Input image type is unsupported */    public static final int FILE_TYPE_UNKNOWN = 6;    /** Whether or not a file has been selected for opening. This allows     * dealing with cases where the Cancel button is pressed. */    private boolean fileSelected = false;    /**      * Class constructor. This is used when input file is not provided     * from a JFileChooser */    public OpenImage(Main mainFrame, JDesktopPane desktop, 		     String fileName) {        this.mainFrame = mainFrame;        this.desktop = desktop;	this.inFile = new File(fileName);	if(inFile.isDirectory() || !inFile.exists() || 	   inFile.length()<=0) {	    return;	}	fileSelected = true;	fileType = determineFileType();    }        /**      * Class constructor. Creates a JFileChooser in order to select the input     * file and determine the file type.      * */    public OpenImage(Main mainFrame, JDesktopPane desktop) {        this.mainFrame = mainFrame;        this.desktop = desktop;        JFileChooser fcOpen = new JFileChooser(curDir);        fcOpen.addChoosableFileFilter(new JJFileFilter(rawImgDesc,rawext));        fcOpen.addChoosableFileFilter(new JJFileFilter(jpgDesc,jpgext));        fcOpen.addChoosableFileFilter(new JJFileFilter(jpeg2kDesc,j2kext));                if(fcOpen.showDialog(desktop,"Open")==JFileChooser.APPROVE_OPTION) {            inFile = fcOpen.getSelectedFile();                            // Check that this is a "real" file            if(inFile.isDirectory() || !inFile.exists() ||                inFile.length()<=0) {                return;            }            // Save current directory for next opening operation            curDir = fcOpen.getCurrentDirectory();        } else {            return;        }        fileSelected = true;        fileType = determineFileType();    }    /** Whether or not a file has been selected for opening */    public boolean isFileSelected() {        return fileSelected;    }    /**      * Determine the input file type by reading and analizing its first 12     * bytes. In the case of JPEG 2000 codestream, it also retrieves the image     * dimension and verify that the bit-depth and the number of components is     * are supported by the current display module.      * */    private int determineFileType() {        // Read the first twelve bytes of the bit stream        byte[] b = new byte[12];        BufferedInputStream bis = null;        try {            bis = new BufferedInputStream(new FileInputStream(inFile));            bis.read(b,0,12);            bis.close();        } catch(IOException ioe) {             return FILE_TYPE_UNKNOWN;         }        if(b[0]==(byte)0xff && b[1]==(byte)0xd8 && b[2]==(byte)0xff) { // JPEG            return FILE_TYPE_JPEG;        } else if(b[0]=='P' && b[1]=='5') { // PGM file            return FILE_TYPE_PGM;        } else if(b[0]=='P' && b[1]=='6') { // PPM file            return FILE_TYPE_PPM;        } else if(b[0]=='P' && b[1]=='G') { // PGX file            return FILE_TYPE_PGX;        } else if((b[0]==(byte)0xFF && b[1]==(byte)0x4F) ||		  (b[0]==(byte)0x00 && b[1]==(byte)0x00 &&		   b[2]==(byte)0x00 && b[3]==(byte)0x0c &&		   b[4]==(byte)0x6a && b[5]==(byte)0x50 &&		   b[6]==(byte)0x20 && b[7]==(byte)0x20 &&		   b[8]==(byte)0x0d && b[9]==(byte)0x0a &&		   b[10]==(byte)0x87 && b[11]==(byte)0x0a) ) { // J2K image	    // 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);	    // Open RandomAccessIO to read JPEG 2000 image information	    RandomAccessIO in = null;	    FileFormatReader ff = null;	    HeaderDecoder hd = null;	    BlkImgDataSrc palettized, channels, resampled, color;	    ColorSpace csMap;	    try {		in = new BEBufferedRandomAccessFile(inFile,"r");		// File format reader (if needed)		ff = new FileFormatReader(in);		ff.readFileFormat();		if(ff.JP2FFUsed) {		    in.seek(ff.getFirstCodeStreamPos());		}		// Header decoder		HeaderInfo hi = new HeaderInfo();		hd = new HeaderDecoder(in,pl,hi);		if(ff.JP2FFUsed) {		    // Bit stream reader		    DecoderSpecs decSpec = hd.getDecoderSpecs();		    BitstreamReaderAgent breader = BitstreamReaderAgent.			createInstance(in,hd,pl,decSpec,				       pl.getBooleanParameter("cdstr_info"),				       hi);		    // Entropy decoder		    EntropyDecoder entdec = hd.			createEntropyDecoder(breader,pl);		    // Dequantizer		    ncCod = hd.getNumComps();		    depth = new int[ncCod];		    for(int i=0; i<ncCod;i++) { 			depth[i] = hd.getOriginalBitDepth(i); 		    }		    Dequantizer deq = hd.			createDequantizer(entdec,depth,decSpec);		    // Inverse wavelet 		    InverseWT invWT = InverseWT.createInstance(deq,decSpec);		    // Converter		    ImgDataConverter converter = new ImgDataConverter(invWT,0);		    // Inverse component transform		    InvCompTransf ictransf = 			new InvCompTransf(converter,decSpec,depth,pl);		    // Colorspace mapping		    csMap = new ColorSpace(in,hd,pl);		    channels = hd.			createChannelDefinitionMapper(ictransf,csMap);		    resampled  = hd.createResampler(channels,csMap);		    palettized = hd.			createPalettizedColorSpaceMapper(resampled,csMap);		    color = hd.createColorSpaceMapper(palettized,csMap);		    int res = breader.getImgRes();		    invWT.setImgResLevel(res);		    if(color!=null) {			ncImg = color.getNumComps();			width = color.getImgWidth();			height = color.getImgHeight();			if(ncImg!=ncCod) {			    depth = new int[ncImg];			    for(int c=0; c<ncImg; c++) {				depth[c] = color.getNomRangeBits(c);			    }			}		    } else {			ncImg = ncCod;			width = hd.getImgWidth();			height = hd.getImgHeight();		    }		} else { 		    ncImg = hd.getNumComps();		    depth = new int[ncImg];		    for(int c=0; c<ncImg; c++) {			depth[c] = hd.getOriginalBitDepth(c);		    }		    width = hd.getImgWidth();		    height = hd.getImgHeight();		}		in.close();	    } catch(Exception e) {                JOptionPane.showMessageDialog(desktop,"Unable to read info "+					      "from "+					      "file "+inFile.getName()+":\n"+					      e.getMessage()+"\n",                                              "Error",                                              JOptionPane.ERROR_MESSAGE);		e.printStackTrace();                try { bis.close(); } catch(IOException ioe2) {}                fileSelected = false;                return FILE_TYPE_UNKNOWN;	    }                         // Check if found codestream will be supported            if(ncCod!=1 && ncCod!=3) {                JOptionPane.showMessageDialog(desktop,"Codestream with "+ncCod+                                              " components not supported.",                                              "Error",                                              JOptionPane.ERROR_MESSAGE);                fileSelected = false;                return FILE_TYPE_UNKNOWN;            }            return FILE_TYPE_JPEG2000;        } else {            return FILE_TYPE_UNKNOWN;        }    }    /** Start image opening (and decoding if needed) operation(s) */    public void run() {        // +---------------------+        // | Create Image object |        // +---------------------+        ImgReader imr;	mainFrame.saveOpenedFile(inFile);        switch(fileType) {        case FILE_TYPE_JPEG:            openJPEG(inFile);	    displayImage(null,true);            break;        case FILE_TYPE_PGM:            openPGM(inFile);            rawFile = inFile;	    displayImage(null,false);            break;        case FILE_TYPE_PPM:            openPPM(inFile);            rawFile = inFile;	    displayImage(null,false);            break;        case FILE_TYPE_PGX:            openPGX(inFile);            rawFile = inFile;	    displayImage(null,false);            break;        case FILE_TYPE_JPEG2000:            j2kdecoder = new J2KGuiDecoder(mainFrame,desktop,this,inFile,width,                                           height);            j2kdecoder.start();	    displayImage(null,true);            return;        case FILE_TYPE_UNKNOWN:        default:            // +--------------------+            // | Unknown file type  |            // +--------------------+             JOptionPane.showMessageDialog(desktop,inFile.getPath(),                                          "Unrecognized image format",                                          JOptionPane.ERROR_MESSAGE);            return;        }    }    /** 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产精品麻豆| 久久精品欧美一区二区三区不卡 | 欧美日韩五月天| 色综合久久精品| 国产91清纯白嫩初高中在线观看 | 51久久夜色精品国产麻豆| 日本道在线观看一区二区| 成人少妇影院yyyy| 丁香天五香天堂综合| 成人午夜碰碰视频| 成人美女在线视频| 99综合电影在线视频| 成人av高清在线| 91老师片黄在线观看| 色呦呦国产精品| 欧美日韩黄色一区二区| 日韩欧美国产电影| 欧美国产日韩一二三区| 亚洲丝袜另类动漫二区| 亚洲永久精品国产| 美女一区二区视频| 国产在线日韩欧美| 91麻豆高清视频| 欧美日韩中文一区| 日韩精品在线一区二区| 国产日产精品1区| 亚洲人成电影网站色mp4| 亚洲一区中文在线| 精品在线你懂的| av电影在线不卡| 777a∨成人精品桃花网| 久久精品一区二区三区不卡| 国产精品美女www爽爽爽| 亚洲乱码精品一二三四区日韩在线| 亚洲一卡二卡三卡四卡无卡久久| 美女视频免费一区| 91丨porny丨中文| 欧美电影免费观看高清完整版在线 | 国产精品妹子av| 亚洲午夜激情网页| 国产最新精品免费| 欧美日韩中文国产| 亚洲国产高清在线观看视频| 亚洲成人动漫在线免费观看| 国产盗摄女厕一区二区三区| 欧美久久高跟鞋激| 日韩一区在线播放| 激情小说欧美图片| 欧美日韩免费在线视频| 国产精品国产三级国产a| 久久超碰97中文字幕| 在线观看视频一区二区| 国产日韩精品一区二区三区| 日本麻豆一区二区三区视频| 色av成人天堂桃色av| 欧美国产精品久久| 国产精品一区二区在线播放| 欧美日韩一区精品| 亚洲精品老司机| 色综合亚洲欧洲| 国产精品免费视频观看| 国产精品综合二区| 国产精品乱人伦中文| 精品影院一区二区久久久| 欧美三级中文字幕| 亚洲动漫第一页| 91麻豆精品秘密| 国产精品久久久久影院亚瑟| 精品一区二区成人精品| 欧美一区二区福利视频| 五月天中文字幕一区二区| 欧美日韩综合不卡| 五月激情六月综合| 3d成人h动漫网站入口| 亚洲成av人片在线| 欧美日韩综合在线| 亚洲成人免费电影| 欧美巨大另类极品videosbest| 亚洲尤物视频在线| 7777精品伊人久久久大香线蕉超级流畅| 136国产福利精品导航| 91蜜桃免费观看视频| 日韩理论片网站| 91黄色免费网站| 亚洲一区二区偷拍精品| 欧美日韩国产在线观看| 无码av免费一区二区三区试看| 欧美精品乱码久久久久久| 视频在线观看一区二区三区| 欧美理论片在线| 毛片av中文字幕一区二区| 欧美大白屁股肥臀xxxxxx| 国产综合成人久久大片91| 国产精品久线观看视频| 91麻豆免费观看| 日韩成人精品在线观看| 精品捆绑美女sm三区| 国产成人精品影视| 亚洲黄色片在线观看| 91精品麻豆日日躁夜夜躁| 久久超级碰视频| 一区二区中文字幕在线| 欧美一区二区三区在| 国产成人午夜电影网| 亚洲综合一区二区三区| 精品国产麻豆免费人成网站| 国产成人av在线影院| 亚洲日本在线天堂| 欧美一区三区二区| 不卡的av在线播放| 日韩高清不卡在线| 中文一区一区三区高中清不卡| 91福利在线看| 国产精品123| 亚洲成人高清在线| 国产精品伦一区| 日韩一区二区三区四区| 99久久99久久精品免费看蜜桃 | 日韩视频免费观看高清完整版在线观看 | 亚洲一区二三区| 337p日本欧洲亚洲大胆色噜噜| 99v久久综合狠狠综合久久| 蜜桃视频在线观看一区| ㊣最新国产の精品bt伙计久久| 69堂精品视频| 一本到不卡精品视频在线观看| 国产精品一区二区91| 免费成人在线观看| 亚洲午夜免费福利视频| 一区视频在线播放| 久久精品人人做人人爽97| 日韩三级免费观看| 欧美性videosxxxxx| 不卡一区中文字幕| 国产成人精品一区二区三区四区| 亚洲成人动漫一区| 一区二区久久久久| 亚洲人成在线播放网站岛国| 国产三区在线成人av| 日韩欧美国产小视频| 欧美一区二区性放荡片| 欧美午夜不卡在线观看免费| bt7086福利一区国产| 高清免费成人av| 国产美女精品在线| 久久精品国产999大香线蕉| 日韩黄色片在线观看| 亚洲妇女屁股眼交7| 一区二区三区四区乱视频| 亚洲视频1区2区| 中文字幕日韩av资源站| 国产日韩v精品一区二区| 国产精品色在线观看| 欧美韩日一区二区三区四区| 国产欧美一区二区精品久导航| 久久精品一区二区| 国产精品美女久久久久久久久久久| 中文一区二区完整视频在线观看| 国产视频一区二区在线| 国产欧美日韩精品一区| 中文字幕精品在线不卡| 自拍偷拍国产亚洲| 亚洲综合久久久久| 日韩精品欧美成人高清一区二区| 午夜电影久久久| 美女视频一区二区| 大胆亚洲人体视频| 99国产欧美另类久久久精品| 91蜜桃免费观看视频| 欧美中文一区二区三区| 制服丝袜国产精品| 欧美xxx久久| 欧美激情艳妇裸体舞| 一区二区久久久久| 老汉av免费一区二区三区| 国产成人亚洲综合色影视| jlzzjlzz亚洲日本少妇| 欧美日韩精品福利| 2020国产精品久久精品美国| 欧美激情艳妇裸体舞| 亚洲第一成人在线| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲精选视频免费看| 亚洲午夜久久久久久久久久久| kk眼镜猥琐国模调教系列一区二区| av亚洲精华国产精华精| 91精品在线观看入口| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲永久免费视频| 国产白丝精品91爽爽久久| 在线精品视频一区二区三四| 精品美女一区二区三区| 亚洲精品国产一区二区三区四区在线| 日韩电影在线免费看| 暴力调教一区二区三区| 日韩欧美二区三区| 一区二区三区日韩| 国产一区二区导航在线播放| 在线亚洲欧美专区二区| 国产色91在线|