⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmpread.m

📁 FIELD II 是B超的matlab仿真程序。 执行 先运行 field_init.m
💻 M
字号:
function [X,map,out3]=bmpread(filename);%BMPREAD Read a BMP (Microsoft Windows Bitmap) file from disk.%	[X,MAP]=BMPREAD('filename') reads the file 'filename' and%	returns the indexed image X and associated colormap%	MAP. If no extension is given for the filename, the%	extension '.bmp' is assumed.%	[R,G,B]=BMPREAD('filename') reads the 24-bit BMP file%	from the file 'filename'.%	BPP=BMPREAD('filename') returns the number of bits per%	pixel in the BMP file.%%	BMPREAD does not read 1-bit or compressed BMP files.%%	See also: BMPWRITE, GIFREAD, HDFREAD, PCXREAD, TIFFREAD,%	          XWDREAD.%	Mounil Patel 3/10/94%	Revised Steve Eddins February 9, 1995%	Copyright (c) 1994 by The MathWorks, Inc.%	$Revision: 1.13 $  $Date: 1995/02/09 15:17:43 $if (nargin~=1)	error('Requires a filename as an argument.');end;if (isstr(filename)~=1)	error('Requires a string filename as an argument.');end;if (isempty(findstr(filename,'.'))==1)	filename=[filename,'.bmp'];end;fid=fopen(filename,'rb','l');if (fid==-1)	error(['Error opening ',filename,' for input.']);end;bfType=fread(fid,2,'uchar');if (bfType~=[66;77])	fclose(fid);	error('Not a BMP file.');end;bfSize=fread(fid,1,'uint');bfReserved1=fread(fid,1,'ushort');bfReserved2=fread(fid,1,'ushort');bfOffBytes=fread(fid,1,'uint');biSize=fread(fid,1,'uint');if (biSize~=40)	fclose(fid);	error('Not a MS Windows Device Independent Bitmap BMP file.');end;biWidth=fread(fid,1,'uint');biHeight=fread(fid,1,'uint');biPlanes=fread(fid,1,'ushort');biBitCount=fread(fid,1,'ushort');if (biBitCount == 1)  error('BMPREAD does not read 1-bit BMP files.');endbiCompression=fread(fid,1,'uint');if biCompression~=0 then	error('Can''t load compressed format bitmaps.');end;biSizeImage=fread(fid,1,'uint');biXPels=fread(fid,1,'uint');biYPels=fread(fid,1,'uint');biClrUsed=fread(fid,1,'uint');biClrImportant=fread(fid,1,'uint');if (nargout <= 1)  X = biBitCount;  map = [];  fclose(fid);  return;endif ((nargout == 2) & (biBitCount == 24))  error('Three output arguments required for 24-bit BMP file.');endif ((nargout == 3) & (biBitCount < 24))  error('Only two arguments needed for 4- and 8-bit BMP files.');endif (biBitCount == 24)  if (rem(biWidth,4)~=0)    XSize=biWidth+(4-rem(biWidth,4));  else    XSize=biWidth;  end  YSize=biHeight;  Size=XSize*YSize;  fseek(fid, bfOffBytes, 'bof');  X=fread(fid,Size*3,'uchar');  out3 = rot90(reshape(X(1:3:length(X)), XSize, YSize)) * (1/255);  map = rot90(reshape(X(2:3:length(X)), XSize, YSize)) * (1/255);  X = rot90(reshape(X(3:3:length(X)), XSize, YSize)) * (1/255);  if (rem(biWidth,4)~=0)    X=X(:,1:biWidth);    map = map(:,1:biWidth);    out3 = out3(:,1:biWidth);  end;    fclose(fid);  return;end  if (biClrUsed==0)	nColors=2.^biBitCount;else	nColors=biClrUsed;end;% load color map nowif (biClrUsed>256)	map=[];	% 24-bit images have no colormapelse	map=fread(fid,4*nColors,'uchar');	map=reshape(map,4,nColors);	map=map';	map=map(:,1:3);	map=fliplr(map);end;map=map./255;% read in 8-bit image dataif (biBitCount==8)	if (rem(biWidth,4)~=0)		XSize=biWidth+(4-rem(biWidth,4));	else		XSize=biWidth;	end	YSize=biHeight;	Size=XSize*YSize;	fseek(fid, bfOffBytes, 'bof');	X=fread(fid,Size,'uchar');	X=reshape(X,XSize,YSize);	X=rot90(X);	X=X+1;	if (rem(biWidth,4)~=0)		X=X(:,1:biWidth);	end;end;if (biBitCount==4)	XSize=ceil(biWidth/2);	if (rem(XSize,4)~=0)		XSize=XSize+rem(XSize,4);	end;	YSize=biHeight;	Size=XSize*YSize;	fseek(fid, bfOffBytes, 'bof');	X=fread(fid,Size,'uchar');	X=reshape(X,XSize,YSize);	X=X';	loX=X;	index=loX>127;	loX(index)=loX(index)-128;	index=loX>63;	loX(index)=loX(index)-64;	index=loX>31;	loX(index)=loX(index)-32;	index=loX>15;	loX(index)=loX(index)-16;	X=X-loX;	X=X./16;	[m,n]=size(X);	X(:,1:2:(n*2))=X;	X(:,2:2:(n*2))=loX;	X=flipud(X);	X=X+1;end;cmax=max(max(X));map=map(1:cmax,:);fclose(fid);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -