关于图象特效处理的结果!卷起千堆雪tyn大哥来看!(15分)

  • 主题发起人 主题发起人 amakusa
  • 开始时间 开始时间
A

amakusa

Unregistered / Unconfirmed
GUEST, unregistred user!
大哥我上次问的那个问题解决了,你提示我用SetStretchBltMode,StretchBlt来进行操作!
我需要达到的效果是把一张图象的每行按一个系数换算后,以换算后的长度来缩放,我按
你告诉小第的方法,这一效果已经实现,可是一张2000*1000的图象完全运算下来要4分钟
(CII 500),有没有更有效率的方法啊,Directx我不太懂哦,希望大哥指教.
 
在Image1上加载一幅位图,设定Image1.AutoSize :=True;
//下面是放大2倍的例子

procedure TForm1.Button1Click(Sender: TObject);
var
Bmp :TBitmap;
begin
Bmp :=TBitmap.Create;
Bmp.Width :=Image1.Width*2;
Bmp.Height :=Image1.Height*2;
SetStretchBltMode(Bmp.Canvas.Handle,HalfTone);
StretchBlt(Bmp.Canvas.Handle,0,0,Bmp.Width,Bmp.Height,
Image1.Canvas.Handle,0,0,Image1.Width,Image1.Height,SRCCOPY);
Image1.Picture.Bitmap.Assign(Bmp);
Bmp.Free;
end;

没有你说得那么费时间吧?

 
如果每一行的循环计算的啊,我真的用了5分钟哦.图象比较大.
 
什么?
为什么你要每行来算?
整幅位图来操作不就OK?
 
procedure TForm1.FlatButton2Click(Sender: TObject);
var
i,j,l,k,g,m:Integer;
Bitmap1:TBitmap;
begin
j:=VrBitmap.Height;
l:=round(j/100);
k:=0;
Bitmap1:=TBitmap.Create;
Bitmap1.PixelFormat:=pf24bit;
Bitmap1.Width:=VrBitmap.Width;
Bitmap1.Height:=VrBitmap.Height;
m:=Round(VrBitmap.Height/2);
for i:=0 to VrBitmap.Height do
begin
g:=round(sqrt(sqr(m)-sqr(m-i)));
if k=l then
begin
FlatGauge1.Progress:=FlatGauge1.Progress+1;
k:=0
end;
//SetStretchBltMode(Bitmap1.Canvas.Handle,STRETCH_HALFTONE);
StretchBlt(Bitmap1.Canvas.Handle,0,i,Bitmap1.Width,i,VrBitmap.Canvas.Handle,m-g,i,g*2,i,SRCCOPY);
k:=k+1;
Application.ProcessMessages;
end;
FlatGauge1.Progress:=0;
Image1.Canvas.Draw(0,0,Bitmap1);
Bitmap1.SaveToFile('c:/demo1.bmp');
Bitmap1.Free;
end;
这是源码哦
 
我上面取消了SetStretchBltMode(Bitmap1.Canvas.Handle,STRETCH_HALFTONE);
再用这句的话会更慢哦,俺想知道有更快的算法吗!
 
搞不明白了;
你不就是想缩放么?
就用我上面写的例子。
 
具提说一下,我的缩放的意思是每一行缩放哦,每行缩放的系数不一样哦,所以需要用到循环!
:(可是好慢,我烟都抽完了,他还没算完,5555555555555555
 
:(可是好慢,我烟都抽完了,他还没算完,5555555555555555
兄第很是YOUMO啊!!!!!!!
 
1、你的机子太次,我P3,256M RAM
2、StretchBlt换成CopyRect试试

我这里不到60秒就OK,2000×1000大小图片
 
接受答案了.
 
我觉得不令人满意!
 
我来到北京,想去你们公司看一看,可惜我把你们公司的资料丢地广州,
你们的网页又上不去,怎么回事啊?是不是www.PANOi.com啊,怎么样都上不去,
要不,你告诉我你们公司的地址和电话。
 

Similar threads

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