WBMP图片格式和转换JPEG方法



介绍
Wireless Bitmap(WBMP)是一种移动设备使用的图像格式。这种格式被用于Wireless Application Protocol(WAP)网页中。
WBMP只支持1位颜色,即WBMP图像只包含黑色和白色像素。

WBMP格式
WBMP文件开头是"Header" 头部。Header的第一个字节表示图片类型,目前只有0,即非压缩的黑白位图。第二个字节固定为0。

第三个字节开始,分别是图像的宽度和高度。宽度和高度都使用多字节整数格式存储,见下文。

紧接着是图像数据,每一个bit表示一个象素:1白,0黑。


一个Wbmp文件结构如图:


多字节整数:一个多字节整数由一个或多个字节构成,每个字节的左边第一位表示后边的字节是否为当前整数的一部分。
如果当前字节的左边第一位为0,表示后面没有更多的字节了,该多字节整数结束;
如果当前字节的左边第一位为1,表示后边的字节也用来构成该多字节整数。



WBMP图片处理和转换
获取Wbmp图片的宽高,转换为jpeg图片:
    public void test() throws Exception {
        String fileName = "/tmp/WBMP.wbmp";
        getWbmpWH(fileName);
        convertWbmp2Jpeg(fileName, "/tmp/wbmp.jpg");
    }

    // 获取Wbmp图片的宽高 
    public void getWbmpWH(String wbmpName) throws Exception {
        File wbmp = new File(wbmpName);
        byte[] datas = FileUtils.readFileToByteArray(wbmp);
        byte tmp;
        int width = 0, height = 0, offset = 2;
        do {
            tmp = datas[offset++];
            width = (width << 7) | (tmp & 0x7f);
        } while ((tmp & 0x80) != 0);

        do {
            tmp = datas[offset++];
            height = (height << 7) | (tmp & 0x7f);
        } while ((tmp & 0x80) != 0);

        System.out.println("width:" + width);
        System.out.println("height:" + height);
    }

    // 转换Wbmp图片为jpeg图片 
    public void convertWbmp2Jpeg(String wbmpName, String jpgName) throws Exception {
        BufferedImage image = ImageIO.read(new File(wbmpName));
        ImageIO.write(image, "JPG", new File(jpgName));
    }





参考
http://blog.csdn.net/openlab/article/details/152688
http://blog.csdn.net/jiajinhao/article/details/6904877





  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值