请教把一幅画处理成油画效果的算法.(100分)

  • 主题发起人 主题发起人 xydj
  • 开始时间 开始时间
X

xydj

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,谢谢
 
建议你找一个有图像处理功能的VCL控件(网上很多),然后看看他的源代码...

你说的太笼统, 谁知道你所谓的"油画效果"是什么样?
 
确实,你具体需要什么效果?
模糊
明/暗
分形
火焰
褪色
变形
浆化
......
 
这个算法大概就是您要求的效果了.
procedure CreateSponge(ABmp: TBitmap; ClipRgn: HRGN; Sponge: Integer);
var
i, j, x, y, r: Integer;
tempbmp : Tbitmap;
begin
if not assigned(abmp) then exit;
tempbmp := tbitmap.create;
tempbmp.assign(abmp);
for i := 0 to tempbmp.height - 1 do
for j := 0 to tempbmp.width - 1 do
begin
r := random(sponge);
x := triminteger( j + ( r - random(r * 2)), 0, tempbmp.width - 1);
y := triminteger(i + (r - random(r * 2)), 0, tempbmp.height - 1);
pbytearray(tempbmp.ScanLine)[j * 3] := pbytearray(tempbmp.scanline[y])[x * 3];
pbytearray(tempbmp.ScanLine)[j * 3+1] := pbytearray(tempbmp.scanline[y])[x * 3+1];
pbytearray(tempbmp.ScanLine)[j * 3+2] := pbytearray(tempbmp.scanline[y])[x * 3+2];
end;
selectcliprgn(abmp.canvas.handle, cliprgn);
bitblt(abmp.canvas.handle, 0, 0, abmp.width, abmp.height,
tempbmp.canvas.handle, 0, 0, SRCCOPY);
selectcliprgn(abmp.canvas.handle, 0);
tempbmp.free;
end;
 
呵呵,eyes果然是高手。

 
哪里哪里.
不过用eYes提供的程序片段要小心, 不保证对(eYes都是临时写的, 估计有很多编译错误,资源漏洞等等).
 
谢谢eyes,你的程序我试了,效果不错,但图像上的小点有些多...^_^
有没有效果更好的算法?谢谢

amo,你能告诉我火焰,褪色,变形,浆化......的算法吗?我另付150大洋.xixi...(俺已囊中羞涩)..谢谢(另:我该怎样再给你分呢?)
 
其实1STCLASS中Tfcimage就有很多有关图像效果的算法
 
xydj:
这些算法的源程序你可以去这个站点:
http://www.sourcebank.com/
不知道还有没有分拿的说
 
谢谢amo,大洋还是要付的...xixixi
但,该怎样给你呢?


另:Eyes,如果有更好的算法请你告诉我喔...谢谢!
 
>amo,你能告诉我火焰,褪色,变形,浆化......的算法吗?
就问这个问题,我来取就是了!

天上掉下个大元宝砸在我的头上......
 
哇!我怎么成了artx???!!!
刚才artx的话是我xydj写的!!!
 
多人接受答案了。
 
后退
顶部