求32位BMP图像转换为8位BMP代码,谢谢

解决方案 »

  1.   

    任意位BMP图像转换为8位BMPprocedure TForm1.BitBtn1Click(Sender: TObject);
    var
    bmp:tbitmap;
    begin
    bmp:=tbitmap.Create;
    bmp.LoadFromFile('d:\1.bmp');
    bmp.PixelFormat:=pf8bit;
    bmp.SaveToFile('d:\2.bmp');
    end;
      

  2.   


    任意位BMP图像转换为8位BMPprocedure TForm1.BitBtn1Click(Sender: TObject);
    var
    bmp:tbitmap;
    begin
    bmp:=tbitmap.Create;
    bmp.LoadFromFile('d:\1.bmp');
    bmp.PixelFormat:=pf8bit;
    bmp.SaveToFile('d:\2.bmp');
    bmp.free;
    end;当然你也可以自己写,告位到底位会有颜色的丢失,就涉及到调色板颜色的取舍,这个我也不会,你有兴趣可以研究下。
      

  3.   

    通过BIT来实现,这个我也知道我想了解的是如何通过自己的算法来实现,请高手指教
      

  4.   

    可以查看下delphi中实现此功能单元的源码,里面有你要得答案,自己写的话效率不一定比delphi工程师的高
      

  5.   

    32位BMP图片,其中3个字节存储了R、G、B值,一个字节存储了透明值,所以为32位
    而8位的BMP图片,只存储了调色版值的引用值(1个字节),实际的颜色是在调色版,Delphi数字图像处理及高级应用,这本书说得很清楚