jpg图像的平滑处理 ( 积分: 100 )

  • 主题发起人 主题发起人 ZYDFY
  • 开始时间 开始时间
Z

ZYDFY

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将jpg文件平滑处理,或者是反走样处理
 
如何将jpg文件平滑处理,或者是反走样处理
 
难道这么不好解决吗
 
转成BMP处理呢,然后转过去的时候设置画质量高点,如何
 
你指定 平滑处理 是什么? 是不是放大/缩小 消除 马赛克现象?如果是,有方法。
 
消除锯齿
 
网上找的bmp锯齿消除的办法,还是老说法,先转bmp,高质量压回去

Procedure AntiAliasRect(clip: tbitmap; XOrigin, YOrigin,
XFinal, YFinal: Integer);
Var Memo, x, y: Integer; (* Composantes primaires des points environnants *)
p0, p1, p2: pbytearray;

Begin
If XFinal < XOrigin Then Begin Memo := XOrigin; XOrigin := XFinal; XFinal := Memo; End; (* Inversion des valeurs *)
If YFinal < YOrigin Then Begin Memo := YOrigin; YOrigin := YFinal; YFinal := Memo; End; (* si diff俽ence n俫ative*)
XOrigin := max(1, XOrigin);
YOrigin := max(1, YOrigin);
XFinal := min(clip.width - 2, XFinal);
YFinal := min(clip.height - 2, YFinal);
clip.PixelFormat := pf24bit;
For y := YOrigin To YFinal Do Begin
p0 := clip.ScanLine[y - 1];
p1 := clip.scanline[y];
p2 := clip.ScanLine[y + 1];
For x := XOrigin To XFinal Do Begin
p1[x * 3] := (p0[x * 3] + p2[x * 3] + p1[(x - 1) * 3] + p1[(x + 1) * 3]) Div 4;
p1[x * 3 + 1] := (p0[x * 3 + 1] + p2[x * 3 + 1] + p1[(x - 1) * 3 + 1] + p1[(x + 1) * 3 + 1]) Div 4;
p1[x * 3 + 2] := (p0[x * 3 + 2] + p2[x * 3 + 2] + p1[(x - 1) * 3 + 2] + p1[(x + 1) * 3 + 2]) Div 4;
End;
End;
End;
 
好问题,我也想知道
 
参照 cnPack 里面的 TcnBitmap, 完全满足你的要求。
 
<<Delphi数字图象处理>> 2.12 位图反走样
 
http://www.swissdelphicenter.ch/torry/showcode.php?id=1896

Smoothly Resize a JPEG Image
 
后退
顶部