社区
GAME,图形处理/多媒体
帖子详情
GDI+中 如何将彩色图象转化成二值图象?
zhangjinwei_52
2006-11-29 03:50:02
如题
...全文
302
20
打赏
收藏
GDI+中 如何将彩色图象转化成二值图象?
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
阿发伯
2006-12-04
打赏
举报
回复
其实不能说是黑白2色,任何2色都是可以的,例子只是黑白的
阿发伯
2006-12-04
打赏
举报
回复
最后加上Imgae.Free;否则内存泄露^_^
阿发伯
2006-12-04
打赏
举报
回复
楼主好像考我的口气,下面的程序能实现黑白2色,不过黑与白的程度,也就是颜色的阀值因图片而异,得靠楼主自己了,既然楼主是研究这方面的,不用我多说吧!
uses GDIPAPI, GDIPOBJ;
{$R *.dfm}
const
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;
zhangjinwei_52
2006-12-04
打赏
举报
回复
maozefa(阿发伯)
不知你的所谓二值图是否就黑白二色,如果是,那更简单
/////////////////////////////////////////////////
就是黑白两色的,不知你是怎么个简单的方法,愿闻其详。
zhangjinwei_52
2006-12-04
打赏
举报
回复
多谢,给分了。
阿发伯
2006-12-04
打赏
举报
回复
我的资料就是.net类库参考,其实回答这类问题我很累,因为我的GDI+是自己写的,接近于.NET,回到这里,还必须重写一遍
zhangjinwei_52
2006-12-04
打赏
举报
回复
呵呵
由此看来你对GDI+是轻车熟路啊,能否给些相关的资料或是Demo啊?
阿发伯
2006-12-04
打赏
举报
回复
不是我考你,谁让你在那卖关子,说了简单却又不公布答案。
====================================================================================
哈哈,误会!你不说就是黑白2色,我怎好卖弄!我上面也就说说很简单,其实方案没想好,幸亏你一考,我就想出来了,哈哈!!!我从不用QQ的
zhangjinwei_52
2006-12-04
打赏
举报
回复
maozefa(阿发伯)
不是我考你,谁让你在那卖关子,说了简单却又不公布答案。
按你的方法问题已经解决。不知能否留下你的QQ,以后还要向你请教啊。
阿发伯
2006-12-01
打赏
举报
回复
to 老冯老弟:
昨天,下面的帖一直没人回,我也很忙,好不容易回了,而且分都得了,却有人事后评论,你来后请你看看,有比我代码更精简省事的吗?
http://community.csdn.net/Expert/topic/5198/5198160.xml?temp=.4719202
阿发伯
2006-12-01
打赏
举报
回复
不错,这不是真正的灰度图象,更不是我要的二值图象
==============================================================================
不知你的所谓二值图是否就黑白二色,如果是,那更简单
老冯
2006-12-01
打赏
举报
回复
今天晚上我来研究研究,看能不能搞点名堂出来.
zhangjinwei_52
2006-12-01
打赏
举报
回复
maozefa(阿发伯)能否加我QQ66516186
zhangjinwei_52
2006-12-01
打赏
举报
回复
不错,这不是真正的灰度图象,更不是我要的二值图象
阿发伯
2006-11-30
打赏
举报
回复
相信泽法大哥绝对没有错!顶^
============================================================================
sanmaotuo(老冯) ,这次你说错了,我这不是真正的灰度图,而是输出了一个黑色通道,近似于灰度图,真正灰度图要一个个点处理
老冯
2006-11-30
打赏
举报
回复
相信泽法大哥绝对没有错!顶^
hzjieking
2006-11-30
打赏
举报
回复
maozefa(阿发伯) 是GDI高手,相信他没错的!
阿发伯
2006-11-30
打赏
举报
回复
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;
51one
2006-11-30
打赏
举报
回复
我也想知道,期待高手出现。
Eddie005
2006-11-29
打赏
举报
回复
路过顶~~
3天掌握Windows
GDI+
图形编程
GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。 GDI的出现使程序员无需要关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。
GDI+
(Graphics Device Interface plus)是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用
GDI+
,因为
GDI+
对以前的Windows版本
中
GDI进行了优化,并添加了许多新功能: 支持渐变的画刷、基数样条函数、持久路径对象、变形矩阵对象、可伸缩区域、混合多种图像格式等 此课程是黄强老师针对
GDI+
的专题课程,由浅入深、搭配课程实战项目,帮助学员对快速熟练的掌握
GDI+
图形图像编程,为C++游戏开发打下坚实的基础!精心打磨、诚意之作,只为让你更轻松的学习!
GDI/
GDI+
介绍
1、GDI概述 GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。 GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)
中
进行操作。它的桥梁作用体现在: (1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。 为实现图形设备无关性,Windows 的绘图操作在一个设备描述
GDI+
双缓冲
1、GDI概述 GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。 GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)
中
进行操作。它的桥梁作用体现在: (1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。 为实现图形设备无关性,Windows...
MFC
中
的GDI/
GDI+
和双缓冲绘图
1、GDI概述 GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。 GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)
中
进行操作。它的桥梁作用体现在: (1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。 为实现图形设
GDI+
概述及双缓冲绘图技术
1.GDI概述及实例分析 1.1 GDI概述 GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)
中
进行操作。它的桥梁作用体现在: (1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。 为实现图形设备无关性,Windows...
GAME,图形处理/多媒体
1,183
社区成员
14,336
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章