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

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

?? bitmaploader.java

?? NeHe用java與OpenGL結合教程源碼
?? JAVA
字號:
package demos.common;

import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.awt.image.DataBufferInt;
import java.io.IOException;
import java.io.InputStream;

/**
 * Windows bitmap file loader.
 * @author Abdul Bezrati
 * @author Pepijn Van Eeckhoudt
 */
public class BitmapLoader {
    public static BufferedImage loadBitmap(String file) throws IOException {
        BufferedImage image;
        InputStream input = null;
        try {
            input = ResourceRetriever.getResourceAsStream(file);

            int bitmapFileHeaderLength = 14;
            int bitmapInfoHeaderLength = 40;

            byte bitmapFileHeader[] = new byte[bitmapFileHeaderLength];
            byte bitmapInfoHeader[] = new byte[bitmapInfoHeaderLength];

            input.read(bitmapFileHeader, 0, bitmapFileHeaderLength);
            input.read(bitmapInfoHeader, 0, bitmapInfoHeaderLength);

            int nSize = bytesToInt(bitmapFileHeader, 2);
            int nWidth = bytesToInt(bitmapInfoHeader, 4);
            int nHeight = bytesToInt(bitmapInfoHeader, 8);
            int nBiSize = bytesToInt(bitmapInfoHeader, 0);
            int nPlanes = bytesToShort(bitmapInfoHeader, 12);
            int nBitCount = bytesToShort(bitmapInfoHeader, 14);
            int nSizeImage = bytesToInt(bitmapInfoHeader, 20);
            int nCompression = bytesToInt(bitmapInfoHeader, 16);
            int nColoursUsed = bytesToInt(bitmapInfoHeader, 32);
            int nXPixelsMeter = bytesToInt(bitmapInfoHeader, 24);
            int nYPixelsMeter = bytesToInt(bitmapInfoHeader, 28);
            int nImportantColours = bytesToInt(bitmapInfoHeader, 36);

            if (nBitCount == 24) {
                image = read24BitBitmap(nSizeImage, nHeight, nWidth, input);
            } else if (nBitCount == 8) {
                image = read8BitBitmap(nColoursUsed, nBitCount, nSizeImage, nWidth, nHeight, input);
            } else {
                System.out.println("Not a 24-bit or 8-bit Windows Bitmap, aborting...");
                image = null;
            }
        } finally {
            try {
                if (input != null)
                    input.close();
            } catch (IOException e) {
            }
        }
        return image;
    }

    private static BufferedImage read8BitBitmap(int nColoursUsed, int nBitCount, int nSizeImage, int nWidth, int nHeight, InputStream input) throws IOException {
        int nNumColors = (nColoursUsed > 0) ? nColoursUsed : (1 & 0xff) << nBitCount;

        if (nSizeImage == 0) {
            nSizeImage = ((((nWidth * nBitCount) + 31) & ~31) >> 3);
            nSizeImage *= nHeight;
        }

        int npalette[] = new int[nNumColors];
        byte bpalette[] = new byte[nNumColors * 4];
        readBuffer(input, bpalette);
        int nindex8 = 0;

        for (int n = 0; n < nNumColors; n++) {
            npalette[n] = (255 & 0xff) << 24 |
                    (bpalette[nindex8 + 2] & 0xff) << 16 |
                    (bpalette[nindex8 + 1] & 0xff) << 8 |
                    (bpalette[nindex8 + 0] & 0xff);

            nindex8 += 4;
        }

        int npad8 = (nSizeImage / nHeight) - nWidth;
        BufferedImage bufferedImage = new BufferedImage(nWidth, nHeight, BufferedImage.TYPE_INT_ARGB);
        DataBufferInt dataBufferByte = ((DataBufferInt) bufferedImage.getRaster().getDataBuffer());
        int[][] bankData = dataBufferByte.getBankData();
        byte bdata[] = new byte[(nWidth + npad8) * nHeight];

        readBuffer(input, bdata);
        nindex8 = 0;

        for (int j8 = nHeight - 1; j8 >= 0; j8--) {
            for (int i8 = 0; i8 < nWidth; i8++) {
                bankData[0][j8 * nWidth + i8] = npalette[((int) bdata[nindex8] & 0xff)];
                nindex8++;
            }
            nindex8 += npad8;
        }

        return bufferedImage;
    }

    private static BufferedImage read24BitBitmap(int nSizeImage, int nHeight, int nWidth, InputStream input) throws IOException {
        int npad = (nSizeImage / nHeight) - nWidth * 3;
        if (npad == 4 || npad < 0)
            npad = 0;
        int nindex = 0;
        BufferedImage bufferedImage = new BufferedImage(nWidth, nHeight, BufferedImage.TYPE_4BYTE_ABGR);
        DataBufferByte dataBufferByte = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer());
        byte[][] bankData = dataBufferByte.getBankData();
        byte brgb[] = new byte[(nWidth + npad) * 3 * nHeight];

        readBuffer(input, brgb);

        for (int j = nHeight - 1; j >= 0; j--) {
            for (int i = 0; i < nWidth; i++) {
                int base = (j * nWidth + i) * 4;
                bankData[0][base] = (byte) 255;
                bankData[0][base + 1] = brgb[nindex];
                bankData[0][base + 2] = brgb[nindex + 1];
                bankData[0][base + 3] = brgb[nindex + 2];
                nindex += 3;
            }
            nindex += npad;
        }

        return bufferedImage;
    }

    private static int bytesToInt(byte[] bytes, int index) {
        return (bytes[index + 3] & 0xff) << 24 |
                (bytes[index + 2] & 0xff) << 16 |
                (bytes[index + 1] & 0xff) << 8 |
                bytes[index + 0] & 0xff;
    }

    private static short bytesToShort(byte[] bytes, int index) {
        return (short) (((bytes[index + 1] & 0xff) << 8) |
                (bytes[index + 0] & 0xff));
    }

    private static void readBuffer(InputStream in, byte[] buffer) throws IOException {
        int bytesRead = 0;
        int bytesToRead = buffer.length;
        while (bytesToRead > 0) {
            int read = in.read(buffer, bytesRead, bytesToRead);
            bytesRead += read;
            bytesToRead -= read;
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品免费在线| 成人h精品动漫一区二区三区| 国产电影精品久久禁18| 欧美色图免费看| 国产精品美女久久久久久2018| 奇米色一区二区三区四区| 成人综合激情网| 精品国产乱码久久久久久蜜臀| 亚洲一区在线视频观看| 不卡的av网站| 国产欧美日韩另类一区| 麻豆91精品91久久久的内涵| 欧洲av一区二区嗯嗯嗯啊| 久久精品视频免费观看| 国内精品伊人久久久久av一坑| 欧美日韩国产欧美日美国产精品| 亚洲视频在线一区| 国产ts人妖一区二区| 久久九九国产精品| 狠狠色丁香久久婷婷综| 欧美一级二级在线观看| 天堂成人国产精品一区| 欧美日韩在线观看一区二区| 亚洲老司机在线| 一本色道久久综合精品竹菊| 国产精品水嫩水嫩| 国产成人夜色高潮福利影视| 久久影院午夜片一区| 久久精品国产澳门| 日韩一级免费观看| 免费观看在线综合| 2014亚洲片线观看视频免费| 九九在线精品视频| 久久日一线二线三线suv| 国产一区二区三区四区五区美女| 精品处破学生在线二十三| 另类的小说在线视频另类成人小视频在线| 在线播放中文一区| 婷婷久久综合九色综合绿巨人| 欧美日韩中文字幕一区| 午夜精品在线视频一区| 欧美精品自拍偷拍| 视频一区在线播放| 精品国产乱码久久久久久蜜臀| 精品综合免费视频观看| 国产午夜精品理论片a级大结局 | 日韩精品在线网站| 偷拍与自拍一区| 日韩一本二本av| 国产精品一区二区在线看| 久久九九久久九九| 91蝌蚪porny| 亚洲国产精品视频| 精品国产制服丝袜高跟| 成人精品高清在线| 亚洲一二三区在线观看| 51精品国自产在线| 国产·精品毛片| 一区二区三区高清在线| 日韩一区二区高清| aaa亚洲精品| 日韩国产成人精品| 中文字幕免费不卡在线| 欧美日精品一区视频| 久久99精品久久久| 亚洲天堂网中文字| 日韩精品一区二区三区中文不卡| 高清不卡在线观看| 性做久久久久久免费观看欧美| 欧美精品一区二区三区蜜桃| 91亚洲精品乱码久久久久久蜜桃| 天天操天天综合网| 欧美国产精品一区二区| 欧美日韩在线播放三区四区| 福利视频网站一区二区三区| 亚洲成av人在线观看| 中文字幕精品一区| 日韩欧美中文字幕精品| 色婷婷久久久综合中文字幕| 精品一区二区在线视频| 一区二区三区日韩欧美精品 | 日本午夜精品一区二区三区电影| 国产精品三级视频| 91精品国产综合久久香蕉的特点| 91亚洲男人天堂| 国产精品18久久久久久久久久久久 | 日本道色综合久久| 国产一区二区不卡| 麻豆精品视频在线观看免费| 亚洲电影一级黄| 有码一区二区三区| 国产精品每日更新| 精品黑人一区二区三区久久| 欧美日韩国产首页在线观看| 91成人看片片| 91在线观看下载| 国产成人无遮挡在线视频| 麻豆精品精品国产自在97香蕉| 亚洲成年人网站在线观看| 一区二区三区四区不卡视频| 亚洲欧洲精品一区二区三区不卡| 国产亚洲欧美日韩在线一区| 欧美一级一级性生活免费录像| 精品视频在线免费| 欧美在线制服丝袜| youjizz久久| 99久久er热在这里只有精品15| 国产不卡在线播放| 国产不卡一区视频| 国产999精品久久久久久| 国产精品自在在线| 国产一区二区三区美女| 国产一区视频导航| 国产在线视频一区二区三区| 久久99精品久久只有精品| 麻豆精品视频在线观看免费| 捆绑变态av一区二区三区| 久色婷婷小香蕉久久| 精品一区二区日韩| 国产成人亚洲综合色影视| 91在线播放网址| 99久久综合精品| 色偷偷一区二区三区| 欧美日韩一区小说| 日韩午夜电影在线观看| 精品国产一区二区在线观看| 精品国产精品一区二区夜夜嗨| 久久色视频免费观看| 国产精品盗摄一区二区三区| 亚洲日本va午夜在线影院| 亚洲一区二区三区三| 美国av一区二区| 国产成人av电影免费在线观看| 99视频精品全部免费在线| 在线免费观看视频一区| 91精品国产日韩91久久久久久| 日韩欧美卡一卡二| 国产三级一区二区| 亚洲欧美偷拍三级| 午夜伦理一区二区| 国产激情一区二区三区| 色欲综合视频天天天| 777亚洲妇女| 日韩精品一区二区三区老鸭窝| 国产亚洲精品久| 亚洲一区二区三区精品在线| 日韩精品亚洲一区| 国产成人免费视频一区| 欧美影视一区二区三区| 国产日韩欧美亚洲| 亚洲国产精品人人做人人爽| 国产在线精品国自产拍免费| 色域天天综合网| 亚洲精品一区二区三区香蕉| 亚洲人精品午夜| 精品一区二区三区免费观看| 色婷婷亚洲精品| 久久久久97国产精华液好用吗| 国产精品久久久久久久久晋中 | 欧美日韩综合在线免费观看| 337p日本欧洲亚洲大胆精品| 亚洲制服丝袜在线| 国产精品小仙女| 欧美一区三区四区| 亚洲美女精品一区| 国产精品99久久久久久似苏梦涵 | 亚洲欧美一区二区在线观看| 天堂va蜜桃一区二区三区| 国产成人精品一区二| 日韩欧美亚洲国产另类| 亚洲精品国久久99热| 不卡大黄网站免费看| 精品第一国产综合精品aⅴ| 亚洲一区中文在线| 99re这里只有精品视频首页| 久久这里只有精品6| 青青草国产精品亚洲专区无| 欧美无乱码久久久免费午夜一区 | 色婷婷久久久久swag精品| 久久精品人人爽人人爽| 日本午夜精品视频在线观看 | 99精品视频一区二区三区| 久久久久久久久久久黄色| 麻豆高清免费国产一区| 欧美少妇xxx| 一区二区三区日韩| 一本色道久久综合精品竹菊| 中文字幕在线免费不卡| 国产精品白丝jk黑袜喷水| 久久日韩精品一区二区五区| 激情图区综合网| 精品国产1区2区3区| 蜜臀av在线播放一区二区三区| 欧美日韩国产片| 亚洲成人动漫在线免费观看| 欧美午夜电影网| 亚洲mv在线观看| 777xxx欧美| 美国毛片一区二区| 欧美成人三级在线|