求读取BMP彩色位图RGB值的源码,谢谢!!(100分)

  • 主题发起人 主题发起人 blueapple
  • 开始时间 开始时间
B

blueapple

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]本人急需读取BMP位图的RGB值,并将其分成大小相等的16块的源码,不胜感激!
 
用ultraedit打开,然后根据是否是真彩色的还是256色的,偏移量是不同的,根据不同的偏移量
,进行数据的读取
 
Var BMP,TmpBMP:TBitmap;
W,H,i,j:Integer;
DesR,SrcR:TRect;
R,G,B:WORD;
CL:TColor;
begin
if OpenPictureDialog1.Execute then
begin
BMP:=TBitmap.Create;
TmpBMP:=TBitmap.Create;
try
BMP.LoadFromFile(OpenPictureDialog1.FileName);
W:=BMP.Width DIV 16;
H:=BMP.Height DIV 16;
TmpBMP.Width:=W;
TmpBMP.Height:=H;
DesR.Left:=0;
DesR.Top:=0;
DesR.Right:=W;
DesR.Bottom:=H;
For i:=0 to 15 do//分成大小相等的16块.
begin
SrcR.Left:=i*W;
SrcR.Right:=(i+1)*W;
For j:=0 to 15 do
begin
SrcR.Top:=j*H;
SrcR.Bottom:=(j+1)*H;
TmpBMP.Width:=0;
TmpBMP.Height:=0;
TmpBMP.Width:=W;
TmpBMP.Height:=H;
TmpBMP.Canvas.CopyMode:=cmSrcCopy;
TmpBMP.Canvas.CopyRect(DesR,BMP.Canvas,SrcR);
TmpBMP.SaveToFile(ExtractFilePath(Application.ExeName)+'BMP_'+IntToStr(i)+'_'+IntToStr(j)+'.BMP');
end;
end;
CL:=BMP.Canvas.Pixels[0,0];
R:=GetRValue(ColorToRGB(CL));
G:=GetGValue(ColorToRGB(CL));
B:=GetBValue(ColorToRGB(CL));
//取某颜色的三原色.
ShowMessage(IntToStr(R)+':'+IntToStr(G)+':'+IntToStr(B));
finally
TmpBMP.Free;
BMP.Free;
end;
end;
end;
 
var
acolor: TColor;

acolor:=image1.bitmap.canvas.pixels[m,n];
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
后退
顶部