• 大小: 5KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Java
  • 标签:

资源简介

因为jdk只识别jpg、png、gif这三种格式的在使用java的时候会需要将bmp格式的图片文件转换成jpg、png、gif等格式,使用此代码可将bmp格式转换成jpg格式,能否转换成其他格式的文件还没有测试

资源截图

代码片段和文件信息



import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.MemoryImageSource;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
 * 
 * @author RJL
 * date 2013-02
 * 將bmp格式圖片轉換成jpg格式
 */
public class BMPReader{

    public String Reader(){  
        Image image;                                    //构造一个目标图
        String result=““;                               //返回结果
 try{
     FileInputStream fs=new FileInputStream(new File(“IDRCallDll“).getAbsolutePath().substring(0new File(“IDRCallDll“).getAbsolutePath().lastIndexOf(“\\“))+“\\photo.bmp“);
     int bflen=14;                            
     byte bf[]=new byte[bflen];             
     fs.read(bf0bflen);                        //读取14字节BMP文件头
     int bilen=40;                  
     byte bi[]=new byte[bilen];
     fs.read(bi0bilen);                       //读取40字节BMP信息头

     // 获取一些重要数据
     int nwidth=(((int)bi[7]&0xff)<<24)          //源图宽度
     | (((int)bi[6]&0xff)<<16)
     | (((int)bi[5]&0xff)<<8)
     | (int)bi[4]&0xff;
     System.out.println(“宽:“+nwidth);
            int nheight=(((int)bi[11]&0xff)<<24)        //源图高度
     | (((int)bi[10]&0xff)<<16)
     | (((int)bi[9]&0xff)<<8)
     | (int)bi[8]&0xff;
     System.out.println(“高:“+nheight);
             //位数
     int nbitcount=(((int)bi[15]&0xff)<<8) | (int)bi[14]&0xff;
     System.out.println(“位数:“+nbitcount);
             //源图大小
     int nsizeimage=Integer.parseInt(getImgInfo(new File(“IDRCallDll“).getAbsolutePath().substring(0new File(“IDRCallDll“).getAbsolutePath().lastIndexOf(“\\“))+“\\photo.bmp“));
//     (((int)bi[23]&0xff)<<24)
//     | (((int)bi[22]&0xff)<<16)
//     | (((int)bi[21]&0xff)<<8)
//     | (int)bi[20]&0xff;
     System.out.println(((int)bi[23]&0xff)<<24);
     System.out.println(((int)bi[22]&0xff)<<16);
     System.out.println((int)bi[21]&0xff<<8);
     System.out.println((int)bi[20]&0xff);
     System.out.println(“源图大小:“+nsizeimage);

             //对24位BMP进行解析
     if(nbitcount==24){
         int npad=(nsizeimage/nheight)-nwidth*3;
         int ndata[]=new int[nheight*nwidth];
         byte brgb[]=new byte[(nwidth+npad)*3*nheight];
        

评论

共有 条评论

相关资源