使用Delphi 2010,您可以使用

TJPEGImage ( Image.Picture.Graphic ).PixelFormat

有没有办法获得TPNGImage的pixelformat或位深?

我尝试了这个,但是它返回了不正确的位深:
 if Lowercase ( ExtractFileExt ( FPath ) ) = '.png' then
   StatusBar1.Panels [ 4 ].Text := ' Color Depth: ' + IntToStr( TPNGImage ( Image.Picture.Graphic ).Header.ColorType ) + '-bit';

最佳答案

您必须使用BitDepth字段

TPNGImage(Image.Picture.Graphic ).Header.BitDepth)

并使用ColorType字段,您可以编写类似这样的函数
function BitsForPixel(const AColorType,  ABitDepth: Byte): Integer;
begin
  case AColorType of
    COLOR_GRAYSCALEALPHA: Result := (ABitDepth * 2);
    COLOR_RGB:  Result := (ABitDepth * 3);
    COLOR_RGBALPHA: Result := (ABitDepth * 4);
    COLOR_GRAYSCALE, COLOR_PALETTE:  Result := ABitDepth;
  else
      Result := 0;
  end;
end;

并像这样使用
procedure TForm72.Button1Click(Sender: TObject);
begin
    ShowMessage(IntToStr( BitsForPixel(
    TPNGImage ( Image1.Picture.Graphic ).Header.ColorType,
    TPNGImage ( Image1.Picture.Graphic ).Header.BitDepth
    )));
end;

10-08 01:01