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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? bmp.java

?? 使用java編寫(xiě)的LSB圖像信息隱藏算法演示程序
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
package hideInfo;


import java.awt.Image;
import java.awt.image.*;
import java.awt.Toolkit;
import java.io.*;
import java.net.URL;

public class BMP {

    private java.awt.Image image;
    private BmpFileheader bmp_fileheader = new BmpFileheader();
    private BmpInfoHeader bmp_infoheader = new BmpInfoHeader();
    private BmpPalette bmp_palette;    
    private int width;
    private int height;

    public BMP(File f) {
        try {
            PCBinaryInputStream file = new PCBinaryInputStream(f);
            read(file);
        } catch (IOException e) {
            System.err.println(e);
        }
    }

 
    public BMP(URL url) {
        try {
            PCBinaryInputStream file = new PCBinaryInputStream(url);
            read(file);
        } catch (IOException e) {
            System.err.println(e);
        }
    }

    /**
     * Creates an BMP from the given Image
     */
    public BMP(Image image) {
        this.image=image;
        width=image.getWidth(null);
        height=image.getHeight(null);
        bmp_infoheader.biWidth = (short)width;
        bmp_infoheader.biHeight = (short)height;
        bmp_infoheader.biBitCount = 24;
        bmp_infoheader.biClrUsed = 0;
    }


    public Image getImage() {
        return image;
    }

    public void write(File f) {
        try {
            PCBinaryOutputStream file = new PCBinaryOutputStream(f);
            write(file);
        } catch (IOException e) {
            System.err.println(e);
        }
    }

    /**
     * Saves the BMP in a given file.
     */
    public void write(URL url) {
        try {
            PCBinaryOutputStream file = new PCBinaryOutputStream(url);
            write(file);
        } catch (IOException e) {
            System.err.println(e);
        }
    }

    /**
     * Saves the BMP in a given file.
     */
    void write(PCBinaryOutputStream file) {
        try {
            int rawData[] = new int[width*height];
            PixelGrabber grabber = new PixelGrabber(image, 0, 0, width, height, rawData, 0, width);
            bmp_palette = new BmpPalette(grabber.getColorModel());
                          
            try {
                grabber.grabPixels();
            } catch (InterruptedException e) { System.err.println(e); }

            ColorModel model = grabber.getColorModel();

            bmp_fileheader.bfOffBits = bmp_fileheader.getSize() + 
                                       bmp_infoheader.getSize() +
                                       bmp_palette.getSize();
            int x=0,y=0,i=0,j=0,k=0;
            byte bitmap[];
            int w=width*3;              
            int h=height-1;

            // dword align width            
            if (w%4 != 0) 
                w += (4-(w%4));

            if (model instanceof IndexColorModel) {
                // not tested - (can't get IndexColorModel from PixelGrabber??!)
                bitmap = new byte[width*bmp_infoheader.biHeight];
                for (y=h;y>=0;y--) {
                    i=(h-y)*width;
                    j=y*width;                    
                    for (x=0;x<width;x++) {
                        bitmap[j++]=(byte)(rawData[i+x]);
                    }
                }
                bmp_fileheader.bfSize = bmp_fileheader.bfOffBits + 
                                        width*bmp_infoheader.biHeight;
            }
            else {
                bitmap = new byte[w*bmp_infoheader.biHeight];
                for (y=0;y<height;y++) {
                   i=(h-y)*width;                   
                   j=y*w;                    
                   for (x=0;x<width;x++) {
                       k=i+x;
                       bitmap[j++]=(byte)((model.getBlue(rawData[k]))&0xFF);
                       bitmap[j++]=(byte)((model.getGreen(rawData[k]))&0xFF);
                       bitmap[j++]=(byte)((model.getRed(rawData[k]))&0xFF);
                   }
                }
            }                                   
            rawData = null;
            // bmp_infoheader.biWidth=w;
            bmp_fileheader.bfSize = bmp_fileheader.bfOffBits + w*bmp_infoheader.biHeight;
                        
            bmp_fileheader.write(file);
            bmp_infoheader.write(file);
            bmp_palette.write(file);
            file.writeByteArray(bitmap);            
            bitmap = null;
            file.close();
        } catch (IOException e) { System.err.println(e); }
    }

    /**
     * Read a BMP from a given file.
     */
    void read(PCBinaryInputStream file) {
        int coloursUsed = 0;
        int scanlineSize = 0;
        int bitplaneSize = 0;
        byte [] rawData = null;

        try {
            bmp_fileheader.read(file);
            bmp_infoheader.read(file);

            if (bmp_infoheader.biClrUsed != 0)
                coloursUsed = bmp_infoheader.biClrUsed;
            else if (bmp_infoheader.biBitCount < 16)
                coloursUsed = 1 << bmp_infoheader.biBitCount;

            bmp_palette = new BmpPalette(coloursUsed);
            bmp_palette.read(file);

            long skip =  bmp_fileheader.bfOffBits - 
                        (bmp_fileheader.getSize()+
                         bmp_infoheader.getSize()+
                         bmp_palette.getSize());
                         
            if (skip > 0) {
                file.skip(skip);
            }

            scanlineSize = ((bmp_infoheader.biWidth*bmp_infoheader.biBitCount+31)/32)*4;

            if (bmp_infoheader.biSizeImage != 0)
                bitplaneSize = bmp_infoheader.biSizeImage;
            else
                bitplaneSize = scanlineSize * bmp_infoheader.biHeight;

            rawData = new byte[bitplaneSize];
            file.readByteArray(rawData);
            file.close();

        } catch (IOException e) {
            System.err.println(e);
        }

        if (rawData != null) {
            if (bmp_infoheader.biBitCount > 8) {
                image = unpack24(rawData, scanlineSize);
            }
            else {
                image = unpack08(rawData, scanlineSize);
            }
        }
        rawData = null;
    }

    Image unpack24(byte [] rawData, int scanlineSize) {
        int b=0, k=0, x=0, y=0;
        int [] data = new int[bmp_infoheader.biWidth * bmp_infoheader.biHeight];
        try {
            for (y=0; y < bmp_infoheader.biHeight; y++) {
              b=(bmp_infoheader.biHeight-1-y)*bmp_infoheader.biWidth;
              k=y*scanlineSize;
              for (x=0; x < bmp_infoheader.biWidth; x++) {
                data[x+b] = 0xFF000000 |
                         (((int)(rawData[k++])) & 0xFF) |
                         (((int)(rawData[k++])) & 0xFF) << 8 |
                         (((int)(rawData[k++])) & 0xFF) << 16;
              }
            }
        }catch (Exception e) {};
        return Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(bmp_infoheader.biWidth, bmp_infoheader.biHeight, ColorModel.getRGBdefault(), data, 0, bmp_infoheader.biWidth));
    }

    Image unpack08(byte [] rawData, int scanlineSize) {
        int b=0, k=0, i=0, x=0, y=0;
        byte [] data = new byte[bmp_infoheader.biWidth * bmp_infoheader.biHeight];
        try {
        if (bmp_infoheader.biBitCount == 1) {            
            for (y=0; y < bmp_infoheader.biHeight; y++) {
              b=(bmp_infoheader.biHeight-1-y)*bmp_infoheader.biWidth;
              k=y*scanlineSize;
              for (x=0; x < (bmp_infoheader.biWidth-8); x+=8) {
                data[b+x+7] = (byte)((rawData[k]) & 1);
                data[b+x+6] = (byte)((rawData[k] >>> 1) & 1);
                data[b+x+5] = (byte)((rawData[k] >>> 2) & 1);
                data[b+x+4] = (byte)((rawData[k] >>> 3) & 1);
                data[b+x+3] = (byte)((rawData[k] >>> 4) & 1);
                data[b+x+2] = (byte)((rawData[k] >>> 5) & 1);
                data[b+x+1] = (byte)((rawData[k] >>> 6) & 1);
                data[b+x]   = (byte)((rawData[k] >>> 7) & 1);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久久国产精品潘金| 国产成人在线观看免费网站| 国产目拍亚洲精品99久久精品| 色综合中文字幕国产 | 麻豆国产91在线播放| 中文字幕不卡在线观看| 5858s免费视频成人| 一本大道综合伊人精品热热| 黄一区二区三区| 午夜精品成人在线| 综合电影一区二区三区 | 欧美性猛交一区二区三区精品| 国内国产精品久久| 视频一区国产视频| 亚洲第一福利一区| 日韩美女视频19| 国产精品卡一卡二卡三| 久久精品视频一区二区三区| 7777精品伊人久久久大香线蕉的| 91丨九色丨黑人外教| 成人免费高清在线观看| 国产精品一区2区| 寂寞少妇一区二区三区| 日韩电影在线一区二区三区| 亚洲一区免费视频| 亚洲日本va午夜在线影院| 亚洲国产精品黑人久久久| 久久久国产精华| wwww国产精品欧美| 精品国产一区二区三区久久影院| 91精品久久久久久久91蜜桃| 欧美福利视频导航| 欧美日韩日本视频| 欧美性欧美巨大黑白大战| 在线免费不卡电影| 91福利在线免费观看| 91福利视频久久久久| 色琪琪一区二区三区亚洲区| 91在线播放网址| 91在线视频观看| 一区二区欧美精品| 国产亚洲欧美日韩日本| 精品久久久久久综合日本欧美| 欧美日韩不卡一区| 欧美巨大另类极品videosbest | 国产伦精品一区二区三区在线观看| 三级不卡在线观看| 日韩精品电影在线| 免费一级欧美片在线观看| 秋霞午夜鲁丝一区二区老狼| 美国一区二区三区在线播放| 美女在线观看视频一区二区| 精品亚洲porn| 国产成人免费在线观看| 97精品国产97久久久久久久久久久久 | 欧美日韩视频在线第一区| 欧美日本视频在线| 日韩三级电影网址| 欧美激情一区二区三区| 国产精品久久久久婷婷| 亚洲制服欧美中文字幕中文字幕| 亚洲成a人在线观看| 免费高清在线一区| 国产乱子伦视频一区二区三区| 成人午夜激情片| 在线观看一区日韩| 日韩视频在线永久播放| 久久久久久久久久久久久久久99| 中文久久乱码一区二区| 一区二区三区四区国产精品| 日韩电影在线观看电影| 国产一区二区调教| 色综合视频一区二区三区高清| 911精品产国品一二三产区| 久久综合九色欧美综合狠狠| 亚洲激情av在线| 久久精品久久久精品美女| jlzzjlzz欧美大全| 91精品国产综合久久久久| 欧美激情中文字幕| 香蕉乱码成人久久天堂爱免费| 国产美女精品人人做人人爽| 一本久久精品一区二区| 日韩精品一区二区三区在线观看| 中文字幕一区二区三中文字幕| 午夜私人影院久久久久| 国产91在线看| 欧美精品日韩综合在线| 欧美国产乱子伦| 午夜精品久久久久久久99樱桃| 国产成a人亚洲| 欧美一级在线免费| 亚洲欧洲制服丝袜| 国产精品一区二区你懂的| 欧美日韩免费视频| 国产精品国产馆在线真实露脸| 日韩影院精彩在线| 99久久99久久精品免费观看| 日韩欧美激情一区| 亚洲第一成人在线| 成人高清在线视频| 精品国产一区二区三区忘忧草| 亚洲综合清纯丝袜自拍| 成人国产精品视频| 精品福利一区二区三区免费视频| 一区二区三区欧美| 成人精品国产福利| 精品福利二区三区| 香蕉久久一区二区不卡无毒影院 | 欧美刺激脚交jootjob| 亚洲国产视频在线| 91女人视频在线观看| 久久久久久电影| 精品一区二区精品| 在线成人av网站| 亚洲精品免费一二三区| 成人精品视频网站| 久久蜜桃av一区精品变态类天堂 | 亚洲国产精品一区二区www| 成人av动漫在线| 国产亚洲欧美日韩日本| 国产麻豆成人传媒免费观看| 欧美刺激午夜性久久久久久久| 亚洲成年人网站在线观看| 欧洲色大大久久| 亚洲激情校园春色| 91高清视频在线| 亚洲一区在线观看免费 | 国产精品1区2区3区| 久久中文娱乐网| 国产又黄又大久久| 久久久久久久电影| 国产成人免费在线视频| 亚洲国产成人午夜在线一区| 国产成人免费视频精品含羞草妖精| 精品99久久久久久| 激情另类小说区图片区视频区| 欧美mv日韩mv国产| 精品一区二区三区影院在线午夜 | 亚洲一区在线观看网站| 欧美丝袜第三区| 日日摸夜夜添夜夜添精品视频| 91精品国产综合久久久久久 | 国产成人在线看| 国产精品色哟哟网站| av在线不卡电影| 亚洲欧美日韩一区二区| 91精品办公室少妇高潮对白| 亚洲国产sm捆绑调教视频 | 99久久久久久| 亚洲在线视频免费观看| 欧美日韩国产一级片| 日韩不卡一区二区三区| 精品久久五月天| 成人免费精品视频| 亚洲一二三四在线| 欧美精品色综合| 国产一区二区三区免费在线观看| 国产亚洲欧美一区在线观看| 91视频你懂的| 亚洲超碰97人人做人人爱| 欧美va天堂va视频va在线| 国产成人自拍高清视频在线免费播放| 亚洲欧洲美洲综合色网| 欧美探花视频资源| 久久99国产精品久久99 | 肉肉av福利一精品导航| 久久久精品国产免费观看同学| 97se亚洲国产综合在线| 亚洲一二三区在线观看| 精品国产一区二区国模嫣然| 99综合电影在线视频| 亚洲va韩国va欧美va精品| 欧美sm美女调教| 99精品欧美一区二区三区小说 | 久久99精品国产麻豆婷婷洗澡| 国产精品伦理在线| 欧美情侣在线播放| 国产在线一区二区| 亚洲免费毛片网站| 欧美成人一区二区三区在线观看| av成人老司机| 老司机精品视频线观看86| 亚洲视频网在线直播| 日韩欧美国产wwwww| 一本大道久久a久久综合| 人妖欧美一区二区| 1000精品久久久久久久久| 日韩视频免费直播| 色呦呦一区二区三区| 狠狠色伊人亚洲综合成人| 亚洲综合免费观看高清完整版在线| 精品播放一区二区| 欧美伊人久久久久久久久影院 | 一区二区在线观看免费视频播放| 亚洲精品一区二区三区在线观看| 欧美吻胸吃奶大尺度电影| 成人ar影院免费观看视频| 精品一区二区三区影院在线午夜| 亚洲一区二区三区中文字幕在线|