如何实现在256色下抖动显示24bit图像,不用drawdibdraw,希望告知详细算法,先谢了(100分)

  • 主题发起人 主题发起人 shuinu
  • 开始时间 开始时间
bitmap.loadfromFile('24bit.bmp');
bitmap.pixelFormat:=pf8bit;
bitmap.savetofile('256.bmp');
 
楼上的不对,但是我也不会。
 
用256色显示真彩图好像不用抖动也能得到比较好的结果的,
你可以用颜色量化(分色)来做。
 
请参考:http://www.delphibbs.com/delphibbs/dispq.asp?lid=672480
 
其实,颤抖的就是加上一点随机的颜色
 
既然楼上的方法你不满意,给你个函数试试!其实你要是想要256最好的效果,还是用JPEG吧!

function CreateGreyScaleBmp(Source: TBitmap): TBitmap;
var
Table: array[Byte] of TRGBQuad;
I: Integer;
begin
Result := TBitmap.Create;
with Result do
begin
PixelFormat := pf8Bit;
Width := Source.Width;
Height := Source.Height;
for I := Low(Table) to High(Table) do
with Table do
begin
rgbRed := I;
rgbGreen := I;
rgbBlue := I;
rgbReserved := 0;
end;
if SetDIBColorTable(Canvas.Handle, Low(Table), High(Table), Table) = 0 then
RaiseLastWin32Error;
Canvas.Draw(0, 0, Source);
end;
end;

 
多人接受答案了。
 

Similar threads

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