資源簡介
通過讀取bmp格式文件的數據格式,用數組合理的讀取后,重新畫出該圖片
代碼片段和文件信息
package?BMP;
import?java.awt.Image;
import?java.awt.Toolkit;
import?java.awt.image.BufferedImage;
import?java.awt.image.MemoryImageSource;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?com.sun.image.codec.jpeg.JPEGCodec;
import?com.sun.image.codec.jpeg.JPEGImageEncoder;
public?class?BMPReader{
????public?String?Reader(){??
????????Image?image;????????????????????????????????????//構造一個目標圖
????????String?result=““;???????????????????????????????//返回結果
?try{
?????FileInputStream?fs=new?FileInputStream(“D:\\圖片轉換\\3.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=(((int)bi[23]&0xff)<<24)
?????|?(((int)bi[22]&0xff)<<16)
?????|?(((int)bi[21]&0xff)<<8)
?????|?(int)bi[20]&0xff;
?????System.out.println(“源圖大小:“+nsizeimage);
???????????? //對24位BMP進行解析
?????if(nbitcount==24){
?????????int?npad=(nsizeimage/nheight)-nwidth*3;
?????????int?ndata[]=new?int[nheight*nwi
評論
共有 條評論