欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

matlab 生成.bmp格式的文件

程序员文章站 2022-09-03 14:47:40
生成.bmp格式的文件 .bmp格式的图片是未压缩的图片,相比于.raw格式,需要加上头文件。下面以大小为m*n的图片为例,说明头文件格式和内容。 m = 12...

生成.bmp格式的文件

.bmp格式的图片是未压缩的图片,相比于.raw格式,需要加上头文件。下面以大小为m*n的图片为例,说明头文件格式和内容。

m = 128;
n = 128;
% 构造头文件
filememory = bmpheadtrans(m*n+1078);
wmemory = bmpheadtrans(m);
hmemory = bmpheadtrans(n);
imgmemory = bmpheadtrans(m*n);
head_bmp = [66; 77; %头文件 0x4d42 不要改动
filememory; %文件大小
0; 0; 0; 0;
54; 4; 0; 0; %1078 前14个字节
40; 0; 0; 0; % 40个字节
wmemory; %图像的长和宽
hmemory;
1; 0; %不变
8; 0; % 8位
0;0;0;0;%不压缩
imgmemory; %
0; 0; 0; 0; 0; 0; 0; 0; %分辨率
0; 1; 0; 0; 0; 0; 0; 0;
% 下面是强度值0-255对应的颜色索引
0; 0; 0;0;
1; 1; 1;0;
2; 2; 2;0;
3; 3; 3;0;
4; 4; 4;0;
5; 5; 5;0;
6; 6; 6;0;
7; 7; 7;0;
8; 8; 8;0;
9; 9; 9;0;
10; 10; 10;0;
11; 11; 11;0;
12; 12; 12;0;
13; 13; 13;0;
14; 14; 14;0;
15; 15; 15;0;
16; 16; 16;0;
17; 17; 17;0;
18; 18; 18;0;
19; 19; 19;0;
20; 20; 20;0;
21; 21; 21;0;
22; 22; 22;0;
23; 23; 23;0;
24; 24; 24;0;
25; 25; 25;0;
26; 26; 26;0;
27; 27; 27;0;
28; 28; 28;0;
29; 29; 29;0;
30; 30; 30;0;
31; 31; 31;0;
32; 32; 32;0;
33; 33; 33;0;
34; 34; 34;0;
35; 35; 35;0;
36; 36; 36;0;
37; 37; 37;0;
38; 38; 38;0;
39; 39; 39;0;
40; 40; 40;0;
41; 41; 41;0;
42; 42; 42;0;
43; 43; 43;0;
44; 44; 44;0;
45; 45; 45;0;
46; 46; 46;0;
47; 47; 47;0;
48; 48; 48;0;
49; 49; 49;0;
50; 50; 50;0;
51; 51; 51;0;
52; 52; 52;0;
53; 53; 53;0;
54; 54; 54;0;
55; 55; 55;0;
56; 56; 56;0;
57; 57; 57;0;
58; 58; 58;0;
59; 59; 59;0;
60; 60; 60;0;
61; 61; 61;0;
62; 62; 62;0;
63; 63; 63;0;
64; 64; 64;0;
65; 65; 65;0;
66; 66; 66;0;
67; 67; 67;0;
68; 68; 68;0;
69; 69; 69;0;
70; 70; 70;0;
71; 71; 71;0;
72; 72; 72;0;
73; 73; 73;0;
74; 74; 74;0;
75; 75; 75;0;
76; 76; 76;0;
77; 77; 77;0;
78; 78; 78;0;
79; 79; 79;0;
80; 80; 80;0;
81; 81; 81;0;
82; 82; 82;0;
83; 83; 83;0;
84; 84; 84;0;
85; 85; 85;0;
86; 86; 86;0;
87; 87; 87;0;
88; 88; 88;0;
89; 89; 89;0;
90; 90; 90;0;
91; 91; 91;0;
92; 92; 92;0;
93; 93; 93;0;
94; 94; 94;0;
95; 95; 95;0;
96; 96; 96;0;
97; 97; 97;0;
98; 98; 98;0;
99; 99; 99;0;
100 ;100; 100;0;
101 ;101; 101;0;
102 ;102; 102;0;
103 ;103; 103;0;
104 ;104 ;104;0;
105 ;105 ;105;0;
106 ;106 ;106;0;
107 ;107 ;107;0;
108 ;108 ;108;0;
109 ;109 ;109;0;
110 ;110 ;110;0;
111 ;111 ;111;0;
112 ;112 ;112;0;
113 ;113 ;113;0;
114 ;114 ;114;0;
115 ;115 ;115;0;
116 ;116 ;116;0;
117 ;117 ;117;0;
118 ;118 ;118;0;
119 ;119 ;119;0;
120 ;120 ;120;0;
121 ;121 ;121;0;
122 ;122 ;122;0;
123 ;123 ;123;0;
124 ;124 ;124;0;
125 ;125 ;125;0;
126 ;126 ;126;0;
127 ;127 ;127;0;
128 ;128 ;128;0;
129 ;129 ;129;0;
130 ;130 ;130;0;
131 ;131 ;131;0;
132 ;132 ;132;0;
133 ;133 ;133;0;
134 ;134 ;134;0;
135 ;135 ;135;0;
136 ;136 ;136;0;
137 ;137 ;137;0;
138 ;138 ;138;0;
139 ;139 ;139;0;
140 ;140 ;140;0;
141 ;141 ;141;0;
142 ;142 ;142;0;
143 ;143 ;143;0;
144 ;144 ;144;0;
145 ;145 ;145;0;
146 ;146 ;146;0;
147 ;147 ;147;0;
148 ;148 ;148;0;
149 ;149 ;149;0;
150 ;150 ;150;0;
151 ;151 ;151;0;
152 ;152 ;152;0;
153 ;153 ;153;0;
154 ;154 ;154;0;
155 ;155 ;155;0;
156 ;156 ;156;0;
157 ;157 ;157;0;
158 ;158 ;158;0;
159 ;159 ;159;0;
160 ;160 ;160;0;
161 ;161 ;161;0;
162 ;162 ;162;0;
163 ;163 ;163;0;
164 ;164 ;164;0;
165 ;165 ;165;0;
166 ;166 ;166;0;
167 ;167 ;167;0;
168 ;168 ;168;0;
169 ;169 ;169;0;
170 ;170 ;170;0;
171 ;171 ;171;0;
172 ;172 ;172;0;
173 ;173 ;173;0;
174 ;174 ;174;0;
175 ;175 ;175;0;
176 ;176 ;176;0;
177 ;177 ;177;0;
178 ;178 ;178;0;
179 ;179 ;179;0;
180 ;180 ;180;0;
181 ;181 ;181;0;
182 ;182 ;182;0;
183 ;183 ;183;0;
184 ;184 ;184;0;
185 ;185 ;185;0;
186 ;186 ;186;0;
187 ;187 ;187;0;
188 ;188 ;188;0;
189 ;189 ;189;0;
190 ;190 ;190;0;
191 ;191 ;191;0;
192 ;192 ;192;0;
193 ;193 ;193;0;
194 ;194 ;194;0;
195 ;195 ;195;0;
196 ;196 ;196;0;
197 ;197 ;197;0;
198 ;198 ;198;0;
199 ;199 ;199;0;
200 ;200 ;200;0;
201 ;201 ;201;0;
202 ;202 ;202;0;
203   ;203 ;203;0;
204 ;204 ;204;0;
205 ;205 ;205;0;
206 ;206 ;206;0;
207 ;207 ;207;0;
208 ;208 ;208;0;
209 ;209 ;209;0;
210 ;210 ;210;0;
211 ;211 ;211;0;
212 ;212 ;212;0;
213 ;213 ;213;0;
214 ;214 ;214;0;
215 ;215 ;215;0;
216 ;216 ;216;0;
217 ;217 ;217;0;
218 ;218 ;218;0;
219 ;219 ;219;0;
220 ;220 ;220;0;
221 ;221 ;221;0;
222 ;222 ;222;0;
223 ;223 ;223;0;
224 ;224 ;224;0;
225 ;225 ;225;0;
226 ;226 ;226;0;
227 ;227 ;227;0;
228 ;228 ;228;0;
229 ;229 ;229;0;
230 ;230 ;230;0;
231 ;231 ;231;0;
232 ;232 ;232;0;
233 ;233 ;233;0;
234 ;234 ;234;0;
235 ;235 ;235;0;
236 ;236 ;236;0;
237 ;237 ;237;0;
238 ;238 ;238;0;
239 ;239 ;239;0;
240 ;240 ;240;0;
241 ;241 ;241;0;
242 ;242 ;242;0;
243 ;243 ;243;0;
244 ;244 ;244;0;
245 ;245 ;245;0;
246 ;246 ;246;0;
247 ;247 ;247;0;
248 ;248 ;248;0;
249 ;249 ;249;0;
250 ;250 ;250;0;
251 ;251 ;251;0;
252 ;252 ;252;0;
253 ;253 ;253;0;
254 ;254 ;254;0;
255 ;255 ;255;0;
]';
% 写入头文件
filename = 'test.bmp';
fid = fopen(filename,'w+');
[rows, cols] = size(head_bmp);
for k = 1:cols
  fwrite(fid, head_bmp(k));
end
fclose(fid);
%写入图片的数值
fid = fopen(filename,'a+');
for i = 1:m
  for j = 1:n
    value = j;
    fwrite(fid,value,'uint8');
  end
end

function fmemory = bmpheadtrans(fmemory10)
fmemory16 = dec2hex(fmemory10);
l=length(fmemory16);
for i = 1:8-l
 fmemory16 = ['0',fmemory16];
end
fmemory = [hex2dec(fmemory16(end - 1:end));
  hex2dec(fmemory16(end - 3: end - 2));
  hex2dec(fmemory16(end - 5: end - 4));
  hex2dec(fmemory16(end - 7: end - 6))];
end

总结

以上所述是小编给大家介绍的matlab 生成.bmp格式的文件,希望对大家有所帮助