如何用DELPHI区分彩色图和黑白图(多色与单色)??
如何用DELPHI区分彩色图和黑白图(多色与单色)??
如何用DELPHI区分彩色图和黑白图(多色与单色)??
解决方案 »
- sql语句里的*=与=有什么区别?
- >>如何实现ADSL拨号?<<<
- 求助fastreport复合报表使用tchart问题
- 如何读取jpeg的大小和颜色等信息?
- 年关了,再散一次,祝福大家的2005更辉煌
- cxdateEdit如何触发事件?需要用到选择的日期.
- DBGrid中如何控制当双击title栏时只触发OnTitleClick而不触发OnDblClick
- 怎么才能截取程序运行的错误,并加上自己写的提示信息。用try...except..可以吗?
- 本人发的一个小项目 http://prj.csdn.net/projdetail.aspx?pointid=7134
- 会计帐套如何设计????
- 散分,看到明天早上有多少人拿分
- 怎么样通过第二个表单读数据?
只要某个点的R,G,B分量不相等, 就是有彩色.
枚举象素,如果有一个象素是彩色的,那就退出。如果全是黑白2色,那就是单色了
type
PRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray = array[0..32767] of TRGBTriple;
function GetSLColor(pRGB: TRGBTriple): TColor;
begin
Result := RGB(pRGB.rgbtRed, pRGB.rgbtGreen, pRGB.rgbtBlue);
end;
var
p: PRGBTripleArray;
x, y: Integer;
Bitmap: TBitmap;
begin
Result:= True;
Bitmap:= TBitmap.Create;
try
Bitmap.PixelFormat:= pf24bit;
Bitmap.Width:= G.Width;
Bitmap.Height:= G.Height;
Bitmap.Canvas.Draw(0,0,G); for y := 0 to Bitmap.Height - 1 do
begin
p:= Bitmap.ScanLine[y];
for x := 0 to (Bitmap.Width - 1) do
begin
if (GetSLColor(p[x]) <> clBlack) and (GetSLColor(p[x]) <> clWhite) then
begin
Result:= False;
Break;
end;
end;
end; finally
Bitmap.Free;
end;
end;
if (GetSLColor(p[x]) <> clBlack) and (GetSLColor(p[x]) <> clWhite) then
做判断就可以了。
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFormFile('c:\1.bmp');
if Bitmap.Monochrome then
ShowMessage('黑白');
Bitmap.Free;
end;