如题
解决方案 »
- 各位Delphi大侠请指点一二
- quickreport 打印无法分页 使用newpage有错(illegal call to newpage)无法使用
- 怎样获得一个已知句柄窗口中所有控件的句柄?
- @@@@@ 请教,有把 *.ram (realPlayer文件) 中的声音转化成 mp3 的工具吗? @@@@@@
- 怎样在StatusBar中滚动显示字幕?
- 怎样在DBGrid的一列中转行显示两个字段的值(不编辑)?
- Rational Rose能生成Delphi代码吗?
- 如何吧返回 tsringlist 函数 改成 返回string 数组
- 在DELPHI中有沒有直接比較兩個用QUERY查詢的記錄集是否相同的函數或方法﹐
- 请教如何将一个十进制数格式化为十六进制数。
- ListView 统计问题
- 有个服务器端程序一直运行在服务器上,如何接收来自网页的请求,让他执行一些操作呢?
uses GDIPOBJ, GDIPAPI;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
g: TGpGraphics;
attr: TGPImageAttributes;
Image: TGpImage;
begin
g := TGpGraphics.Create(Handle, False);
Image := TGpBitmap.Create('e:\1.jpg');
attr := TGPImageAttributes.Create;
attr.SetOutputChannel(ColorChannelFlagsK);
g.DrawImage(Image, MakeRect(0, 0, Image.GetWidth, Image.GetHeight),
0, 0, Image.GetWidth, Image.GetHeight, UnitPixel, attr);
attr.Free;
g.Free;
Image.Free;
end;
============================================================================
sanmaotuo(老冯) ,这次你说错了,我这不是真正的灰度图,而是输出了一个黑色通道,近似于灰度图,真正灰度图要一个个点处理
昨天,下面的帖一直没人回,我也很忙,好不容易回了,而且分都得了,却有人事后评论,你来后请你看看,有比我代码更精简省事的吗?http://community.csdn.net/Expert/topic/5198/5198160.xml?temp=.4719202
不知你的所谓二值图是否就黑白二色,如果是,那更简单
/////////////////////////////////////////////////
就是黑白两色的,不知你是怎么个简单的方法,愿闻其详。
maps: array[0..5] of ARGB = ($FFFF0000, $FF00FF00, $FF0000FF, $FFFFFF00, $FFFF00FF, $FF00FFFF);
Threshold = 0.5; // 阀值,这是黑白区分的关键procedure TForm1.Button1Click(Sender: TObject);
var
tmp, Image: TGpBitmap;
attr: TGpImageAttributes;
g: TGpGraphics;
map: array[0..5] of TColorMap;
i, w, h: Integer;
begin
tmp := TGpBitmap.Create(Image1.Picture.Bitmap.Handle, Image1.Picture.Bitmap.Palette);
w := tmp.GetWidth;
h := tmp.GetHeight;
Image := TGpBitmap.Create(w, h);
attr := TGpImageAttributes.Create;
attr.SetThreshold(Threshold);
g := TGpGraphics.Create(Image);
g.DrawImage(tmp, MakeRect(0, 0, w, h), 0, 0, w, h, UnitPixel, attr);
tmp.Free; for i := 0 to 5 do
begin
map[i].oldColor := maps[i];
map[i].newColor := aclWhite;
end;
attr.Reset;
attr.SetRemapTable(6, @map);
g.Free; g := TGpGraphics.Create(Handle, False);
g.DrawImage(image, MakeRect(0, 0, w, h), 0, 0, w, h, UnitPixel, attr);
g.Free;
attr.Free;
end;
不是我考你,谁让你在那卖关子,说了简单却又不公布答案。
按你的方法问题已经解决。不知能否留下你的QQ,以后还要向你请教啊。
由此看来你对GDI+是轻车熟路啊,能否给些相关的资料或是Demo啊?