johnnian / Blog

MyBlog
Mozilla Public License 2.0
208 stars 59 forks source link

BMP图片详解 #51

Open johnnian opened 6 years ago

johnnian commented 6 years ago

最近在研究处理BMP的文件,顺带总结下相关知识点!

BMP文件结构


    //byteBuffer 是图片的byte数据
    //数据区的偏移量
    byteBuffer.flip();
    byte[] dataOffsetArr = new byte[4];
    byteBuffer.position(10);
    byteBuffer.get(dataOffsetArr);
    int dataOffset = HexUtils.byteArrayToInt(dataOffsetArr, false);
    logger.info("size:" + dataOffset);

    //图像的宽度
    byte[] widthArr = new byte[4];
    byteBuffer.position(18);
    byteBuffer.get(widthArr);
    int width = HexUtils.byteArrayToInt(widthArr, false);
    logger.info("width:" + width);

    //图像的高度
    byte[] highArr = new byte[4];
    byteBuffer.position(22);
    byteBuffer.get(highArr);
    int high = HexUtils.byteArrayToInt(highArr, false);
    logger.info("width:" + high);

    //图像的深度
    byte[] depthArr = new byte[4];
    byteBuffer.position(28);
    byteBuffer.get(depthArr);
    int depth = HexUtils.byteArrayToInt(depthArr, false);
    logger.info("depth:" + depth);

    //图像的深度
    byte[] sizeArr = new byte[4];
    byteBuffer.position(34);
    byteBuffer.get(sizeArr);
    int dataSize = HexUtils.byteArrayToInt(sizeArr, false);
    logger.info("dataSize:" + dataSize);

    //数据区
    byte[] bmpData = new byte[dataSize];
    byteBuffer.position(dataOffset);
    byteBuffer.get(bmpData);

参考链接