怎么样将bmp黑白图,转换成点阵数组形式???
例如下面转换后的数组例如:这里是c语言的数组
unsigned char sellpixel[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 240, 0, 0, 0, 0, 0, 3, 255, 255, 0, 0, 0,
0, 0, 15, 255, 255, 192, 0, 0, 0, 0, 63, 255, 255, 240, 0, 0, 0, 0, 127, 255, 240, 248, 0, 0, 0, 1, 255, 255, 224, 126, 0, 0,
0, 3, 255, 255, 224, 127, 0, 0, 0, 15, 255, 255, 0, 7, 192, 0, 0, 31, 255, 254, 0, 1, 224, 0, 0, 63, 255, 252, 0, 0, 240, 0,
0, 127, 255, 252, 0, 0, 248, 0, 0, 127, 255, 224, 0, 0, 56, 0, 0, 255, 255, 192, 0, 0, 12, 0, 1, 255, 255, 192, 0, 0, 14, 0,
1, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 1, 0, 4, 0, 96, 0, 0, 56, 0, 128, 4, 0, 120, 0, 7, 57, 192, 128,
8, 0, 56, 0, 15, 57, 224, 64, 8, 0, 48, 0, 14, 59, 128, 64, 16, 0, 48, 0, 28, 63, 12, 32, 16, 0, 48, 0, 60, 60, 12, 32,
16, 0, 48, 224, 124, 120, 12, 32, 16, 96, 48, 112, 205, 216, 60, 32, 32, 112, 48, 115, 140, 15, 248, 16, 32, 112, 48, 112, 12, 0, 0, 16,
32, 112, 51, 224, 12, 63, 0, 16, 32, 112, 254, 224, 7, 231, 0, 16, 32, 255, 240, 224, 6, 7, 0, 16, 32, 248, 48, 0, 6, 119, 0, 16,
32, 0, 48, 0, 6, 119, 0, 16, 32, 0, 48, 0, 6, 119, 0, 16, 32, 96, 48, 224, 6, 103, 0, 16, 32, 48, 48, 112, 14, 103, 0, 16,
16, 48, 48, 112, 6, 103, 0, 32, 16, 48, 55, 240, 0, 248, 0, 32, 16, 99, 252, 112, 1, 206, 0, 32, 16, 255, 128, 112, 1, 143, 128, 32,
8, 248, 0, 112, 7, 7, 192, 64, 8, 96, 0, 96, 14, 3, 192, 64, 4, 0, 0, 0, 56, 1, 192, 128, 2, 0, 0, 0, 0, 0, 1, 0,
1, 192, 0, 0, 15, 255, 254, 0, 0, 192, 0, 0, 15, 255, 252, 0, 0, 112, 0, 0, 31, 255, 248, 0, 0, 124, 0, 0, 255, 255, 248, 0,
0, 60, 0, 0, 255, 255, 240, 0, 0, 30, 0, 1, 255, 255, 224, 0, 0, 15, 128, 3, 255, 255, 192, 0, 0, 3, 248, 31, 255, 255, 0, 0,
0, 1, 248, 31, 255, 254, 0, 0, 0, 0, 124, 63, 255, 248, 0, 0, 0, 0, 63, 255, 255, 240, 0, 0, 0, 0, 15, 255, 255, 192, 0, 0,
0, 0, 3, 255, 255, 0, 0, 0, 0, 0, 0, 63, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 170, 170, 170, 170, 170, 170, 160,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
例如下面转换后的数组例如:这里是c语言的数组
unsigned char sellpixel[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 240, 0, 0, 0, 0, 0, 3, 255, 255, 0, 0, 0,
0, 0, 15, 255, 255, 192, 0, 0, 0, 0, 63, 255, 255, 240, 0, 0, 0, 0, 127, 255, 240, 248, 0, 0, 0, 1, 255, 255, 224, 126, 0, 0,
0, 3, 255, 255, 224, 127, 0, 0, 0, 15, 255, 255, 0, 7, 192, 0, 0, 31, 255, 254, 0, 1, 224, 0, 0, 63, 255, 252, 0, 0, 240, 0,
0, 127, 255, 252, 0, 0, 248, 0, 0, 127, 255, 224, 0, 0, 56, 0, 0, 255, 255, 192, 0, 0, 12, 0, 1, 255, 255, 192, 0, 0, 14, 0,
1, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 1, 0, 4, 0, 96, 0, 0, 56, 0, 128, 4, 0, 120, 0, 7, 57, 192, 128,
8, 0, 56, 0, 15, 57, 224, 64, 8, 0, 48, 0, 14, 59, 128, 64, 16, 0, 48, 0, 28, 63, 12, 32, 16, 0, 48, 0, 60, 60, 12, 32,
16, 0, 48, 224, 124, 120, 12, 32, 16, 96, 48, 112, 205, 216, 60, 32, 32, 112, 48, 115, 140, 15, 248, 16, 32, 112, 48, 112, 12, 0, 0, 16,
32, 112, 51, 224, 12, 63, 0, 16, 32, 112, 254, 224, 7, 231, 0, 16, 32, 255, 240, 224, 6, 7, 0, 16, 32, 248, 48, 0, 6, 119, 0, 16,
32, 0, 48, 0, 6, 119, 0, 16, 32, 0, 48, 0, 6, 119, 0, 16, 32, 96, 48, 224, 6, 103, 0, 16, 32, 48, 48, 112, 14, 103, 0, 16,
16, 48, 48, 112, 6, 103, 0, 32, 16, 48, 55, 240, 0, 248, 0, 32, 16, 99, 252, 112, 1, 206, 0, 32, 16, 255, 128, 112, 1, 143, 128, 32,
8, 248, 0, 112, 7, 7, 192, 64, 8, 96, 0, 96, 14, 3, 192, 64, 4, 0, 0, 0, 56, 1, 192, 128, 2, 0, 0, 0, 0, 0, 1, 0,
1, 192, 0, 0, 15, 255, 254, 0, 0, 192, 0, 0, 15, 255, 252, 0, 0, 112, 0, 0, 31, 255, 248, 0, 0, 124, 0, 0, 255, 255, 248, 0,
0, 60, 0, 0, 255, 255, 240, 0, 0, 30, 0, 1, 255, 255, 224, 0, 0, 15, 128, 3, 255, 255, 192, 0, 0, 3, 248, 31, 255, 255, 0, 0,
0, 1, 248, 31, 255, 254, 0, 0, 0, 0, 124, 63, 255, 248, 0, 0, 0, 0, 63, 255, 255, 240, 0, 0, 0, 0, 15, 255, 255, 192, 0, 0,
0, 0, 3, 255, 255, 0, 0, 0, 0, 0, 0, 63, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 170, 170, 170, 170, 170, 170, 160,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
解决方案 »
- 在使用Opendialog选择文件后,再用TStringList.LoadFromFile()读入文件时出错,求救!
- delphi下能否替换多行啊?
- 软件发布兼散分,进来侃侃有分!
- 关于series的坐标值的问题。
- 两个简单的问题
- 如何用Delphi编程查看cfg文件的内容?
- 我想通过DELPHI定时向Lotus Domino Server发邮件,可行性怎么样?
- 我用adoquery把edit中的数据存入表中,可是当edit中的数据是这样'0001'时都变成'1',怎么办?代码如下.
- 小弟出学,请教一下B/S,C/S,2层,3层是什么意思?我只有40分,全给你了!
- 怎样把第三方控件的源程序加入到项目中以便出错时DELPHI可以定位源程序相应的位置?
- 在DBGRID里根据单价和数量取金额
- 用delphi6怎么實現上傳文件到指定服務器
byTmp : BYTE;
nFlag : Integer;
nIndex: Integer; sellpixel: array of BYTE;
begin
SetLength(sellpixel, Image1.Width * Image1.Height); nFlag := 0;
nIndex:= 0;
byTmp := 0; for x:= 0 to Image1.Width - 1 do
begin
for y:= 0 to Image1.Height - 1 do
begin
if (GetPixel(Image1.Canvas.Handle, x, y) = $FFFFFF) then
byTmp:= BYTE((byTmp shl 1) or 1)
else
byTmp:= BYTE(byTmp shl 1); inc(nFlag);
if (nFlag >= 8) then
begin
sellpixel[nIndex]:= byTmp;
inc(nIndex);
nFlag:= 0; byTmp:= 0;
end;
end;
end;
end;
这是读取24位图的程序type
Trgb=record
b:byte;
g:byte;
r:byte;
end;
var
pic: array of array of byte;
procedure bmptoarray(path: string);
var
i,j,x,y: integer;
stream: Tmemorystream;
rgb: array of Trgb;
bfh: BITMAPFILEHEADER;//位图文件头
bih: BITMAPINFOHEADER; //位图信息头
begin
Stream := TMemoryStream.Create;
stream.LoadFromFile(path);
stream.Position:=0;
stream.Read(bfh,sizeof(BITMAPFILEHEADER));
stream.Read(bih,sizeof(BITMAPINFOHEADER));
setlength(rgb,bih.biWidth*bih.biHeight);
setlength(pic,bih.biWidth,bih.biHeight);
for i:=0 to length(rgb)-1 do
stream.Read(rgb[i],sizeof(Trgb));
stream.Free;
for i:=0 to bih.biWidth*bih.biHeight-1 do
begin
x:=i MOD bih.biWidth;
y:=i div bih.biWidth;
pic[x,bih.biHeight-y]:=round(0.11*rgb[i].b+0.3*rgb[i].r+0.59*rgb[i].g);//这里你可以进行黑白处理
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
bmptoarray('d:\7.bmp');
end;
怎么输出pic 到 string ???
0, 0, 15, 255, 255, 192, 0, 0, 0, 0, 63, 255, 255, 240, 0, 0, 0, 0, 127, 255, 240, 248, 0, 0, 0, 1, 255, 255, 224, 126, 0, 0,
0, 3, 255, 255, 224, 127, 0, 0, 0, 15, 255, 255, 0, 7, 192, 0, 0, 31, 255, 254, 0, 1, 224, 0, 0, 63, 255, 252, 0, 0, 240, 0,
0, 127, 255, 252, 0, 0, 248, 0, 0, 127, 255, 224, 0, 0, 56, 0, 0, 255, 255, 192, 0, 0, 12, 0, 1, 255, 255, 192, 0, 0, 14, 0,
1, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 1, 0, 4, 0, 96, 0, 0, 56, 0, 128, 4, 0, 120, 0, 7, 57, 192, 128,
8, 0, 56, 0, 15, 57, 224, 64, 8, 0, 48, 0, 14, 59, 128, 64, 16, 0, 48, 0, 28, 63, 12, 32, 16, 0, 48, 0, 60, 60, 12, 32,
16, 0, 48, 224, 124, 120, 12, 32, 16, 96, 48, 112, 205, 216, 60, 32, 32, 112, 48, 115, 140, 15, 248, 16, 32, 112, 48, 112, 12, 0, 0, 16,
32, 112, 51, 224, 12, 63, 0, 16, 32, 112, 254, 224, 7, 231, 0, 16, 32, 255, 240, 224, 6, 7, 0, 16, 32, 248, 48, 0, 6, 119, 0, 16,
32, 0, 48, 0, 6, 119, 0, 16, 32, 0, 48, 0, 6, 119, 0, 16, 32, 96, 48, 224, 6, 103, 0, 16, 32, 48, 48, 112, 14, 103, 0, 16,
16, 48, 48, 112, 6, 103, 0, 32, 16, 48, 55, 240, 0, 248, 0, 32, 16, 99, 252, 112, 1, 206, 0, 32, 16, 255, 128, 112, 1, 143, 128, 32,
8, 248, 0, 112, 7, 7, 192, 64, 8, 96, 0, 96, 14, 3, 192, 64, 4, 0, 0, 0, 56, 1, 192, 128, 2, 0, 0, 0, 0, 0, 1, 0,
1, 192, 0, 0, 15, 255, 254, 0, 0, 192, 0, 0, 15, 255, 252, 0, 0, 112, 0, 0, 31, 255, 248, 0, 0, 124, 0, 0, 255, 255, 248, 0,
0, 60, 0, 0, 255, 255, 240, 0, 0, 30, 0, 1, 255, 255, 224, 0, 0, 15, 128, 3, 255, 255, 192, 0, 0, 3, 248, 31, 255, 255, 0, 0,
0, 1, 248, 31, 255, 254, 0, 0, 0, 0, 124, 63, 255, 248, 0, 0, 0, 0, 63, 255, 255, 240, 0, 0, 0, 0, 15, 255, 255, 192, 0, 0,
0, 0, 3, 255, 255, 0, 0, 0, 0, 0, 0, 63, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 170, 170, 170, 170, 170, 170, 160,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
哦.我是想输出到memo里或者到txt里.
如txt里内容如下
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 240, 0, 0, 0, 0, 0, 3, 255, 255, 0, 0, 0,
0, 0, 15, 255, 255, 192, 0, 0, 0, 0, 63, 255, 255, 240, 0, 0, 0, 0, 127, 255, 240, 248, 0, 0, 0, 1, 255, 255, 224, 126, 0, 0,
0, 3, 255, 255, 224, 127, 0, 0, 0, 15, 255, 255, 0, 7, 192, 0, 0, 31, 255, 254, 0, 1, 224, 0, 0, 63, 255, 252, 0, 0, 240, 0,
0, 127, 255, 252, 0, 0, 248, 0, 0, 127, 255, 224, 0, 0, 56, 0, 0, 255, 255, 192, 0, 0, 12, 0, 1, 255, 255, 192, 0, 0, 14, 0,
1, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 1, 0, 4, 0, 96, 0, 0, 56, 0, 128, 4, 0, 120, 0, 7, 57, 192, 128,
8, 0, 56, 0, 15, 57, 224, 64, 8, 0, 48, 0, 14, 59, 128, 64, 16, 0, 48, 0, 28, 63, 12, 32, 16, 0, 48, 0, 60, 60, 12, 32,
16, 0, 48, 224, 124, 120, 12, 32, 16, 96, 48, 112, 205, 216, 60, 32, 32, 112, 48, 115, 140, 15, 248, 16, 32, 112, 48, 112, 12, 0, 0, 16,
32, 112, 51, 224, 12, 63, 0, 16, 32, 112, 254, 224, 7, 231, 0, 16, 32, 255, 240, 224, 6, 7, 0, 16, 32, 248, 48, 0, 6, 119, 0, 16,
32, 0, 48, 0, 6, 119, 0, 16, 32, 0, 48, 0, 6, 119, 0, 16, 32, 96, 48, 224, 6, 103, 0, 16, 32, 48, 48, 112, 14, 103, 0, 16,
16, 48, 48, 112, 6, 103, 0, 32, 16, 48, 55, 240, 0, 248, 0, 32, 16, 99, 252, 112, 1, 206, 0, 32, 16, 255, 128, 112, 1, 143, 128, 32,
8, 248, 0, 112, 7, 7, 192, 64, 8, 96, 0, 96, 14, 3, 192, 64, 4, 0, 0, 0, 56, 1, 192, 128, 2, 0, 0, 0, 0, 0, 1, 0,
1, 192, 0, 0, 15, 255, 254, 0, 0, 192, 0, 0, 15, 255, 252, 0, 0, 112, 0, 0, 31, 255, 248, 0, 0, 124, 0, 0, 255, 255, 248, 0,
0, 60, 0, 0, 255, 255, 240, 0, 0, 30, 0, 1, 255, 255, 224, 0, 0, 15, 128, 3, 255, 255, 192, 0, 0, 3, 248, 31, 255, 255, 0, 0,
0, 1, 248, 31, 255, 254, 0, 0, 0, 0, 124, 63, 255, 248, 0, 0, 0, 0, 63, 255, 255, 240, 0, 0, 0, 0, 15, 255, 255, 192, 0, 0,
0, 0, 3, 255, 255, 0, 0, 0, 0, 0, 0, 63, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 170, 170, 170, 170, 170, 170, 160,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
s: string;for j:=0 to length(pic[0])-1 do
begin
s:='';
for i:=0 to length(pic)-1 d0
begin
s:=s+','+inttostr(pic[i,j]);
end;
memo1.line.add(s);
end;