您的位置:首页 > 编程语言 > Java开发

读取 24 位 BMP 图像并生成 JPG 缩略图(二)

2004-05-07 13:31 393 查看
    相信代码部分应该没有什么问题吧?通过以下方法,你可以得到更多的信息:

       //得到压缩值
        int ncompression = (((int)bi[19])<<24)
        | (((int)bi[18])<<16)
        | (((int)bi[17])<<8)
        | (int)bi[16];
        System.out.println("压缩:"+ncompression);

       //象素情况
        int nxpm = (((int)bi[27]&0xff)<<24)
        | (((int)bi[26]&0xff)<<16)
        | (((int)bi[25]&0xff)<<8)
        | (int)bi[24]&0xff;
        System.out.println("X-象素/米:"+nxpm);
        int nypm = (((int)bi[31]&0xff)<<24)
        | (((int)bi[30]&0xff)<<16)
        | (((int)bi[29]&0xff)<<8)
        | (int)bi[28]&0xff;
        System.out.println("Y-象素/米:"+nypm);

       //颜色使用情况
        int nclrused = (((int)bi[35]&0xff)<<24)
        | (((int)bi[34]&0xff)<<16)
        | (((int)bi[33]&0xff)<<8)
        | (int)bi[32]&0xff;
        System.out.println("颜色使用数:"+nclrused);
        int nclrimp = (((int)bi[39]&0xff)<<24)
        | (((int)bi[38]&0xff)<<16)
        | (((int)bi[37]&0xff)<<8)
        | (int)bi[36]&0xff;
        System.out.println("颜色显要:"+nclrimp);
        int nplanes = (((int)bi[13]&0xff)<<8) | (int)bi[12]&0xff;
        System.out.println("位面:"+nplanes);

       //信息头中的图像大小
        int nbisize = (((int)bi[3]&0xff)<<24) 
        | (((int)bi[2]&0xff)<<16)
        | (((int)bi[1]&0xff)<<8)
        | (int)bi[0]&0xff;
        System.out.println("BMP信息头大小:"+nbisize);

       //文件大小及种类
        int nsize=(((int)bf[5]&0xff)<<24)      
               | (((int)bf[4]&0xff)<<16)
        | (((int)bf[3]&0xff)<<8)
        | (int)bf[2]&0xff;
        System.out.println("文件种类:"+(char)bf[0]+(char)bf[1]);
        System.out.println("文件大小:"+nsize);
       
后记
       可以通过变量nbitcount来判断是否是8位位图并作出相应处理。限于目前24位位图应用较为广泛,所以没有写出相应代码,如有需要可查阅Jeff West与John D.Mitchell之著作《How to read 8- and 24-bit Microsoft Windows bitmaps in Java applications》。
       在此,我谨慎的表示:因为位图(BMP)没有经过压缩,所以对于源图的容量几乎没有限制,不会出现内存不足的情况。
   
       在写这篇文章时我只进行了9M左右BMP的读取,其实大家有兴趣的话可以利用50M左右的TIF图转换为BMP(几乎还是50M)来做试验。并欢迎上来指正。

(请注意!引用、转贴本文应注明原作者:Rosen Jiang 以及出处:http://blog.csdn.net/rosen
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bi microsoft windows java