- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

はじめに Edit

DelphiのPNGライブラリであるTPNGImageについて。

他のライブラリがいいなら、Delphi/PNGを利用するを参照。

使い方 Edit

非常に簡単です。

まずは、

uses pngimage;

しておきます。

読み込む方法 Edit

読み込むだけなら、簡単にできます。
TImageに読み込む場合、

Image1.Picture.LoadFromFile('image1.png');

TBitmapに読み込む場合、

1
2
3
4
5
6
7
8
9
10
var PNG: TPNGObject;
begin
  PNG := TPNGObject.Create;
  try
    PNG.LoadFromFile(FileName);
    Bitmap.Assign(PNG);
  finally
    FreeAndNil(PNG); 
  end;
end;

画素にアクセスする方法 Edit

TBitmapと同じで、ScanLineでアクセスできます。
24bit PNGなら、24bit Bitmapと同じ感覚です。

アルファ情報にアクセスする方法。 Edit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  procedure LoadAlpha();
  var
    x, y: Integer;
    pSrc, pDest: PByte;
    Alpha: Byte;
    Dest: TBitmap;
  begin
    AlphaImage.Picture.Bitmap.Width := PNG.Width;
    AlphaImage.Picture.Bitmap.Height := PNG.Height;
    Dest := AlphaImage.Picture.Bitmap;
    Dest.PixelFormat := pf24bit;

    for y := 0 to PNG.Height - 1 do begin
      pSrc := pByte(PNG.AlphaScanLine[y]);
      pDest := Dest.ScanLine[y];
      for x := 0 to PNG.Width - 1 do begin
        Alpha := pSrc^; Inc(pSrc);

        pDest^ := Alpha; Inc(pDest);
        pDest^ := Alpha; Inc(pDest);
        pDest^ := Alpha; Inc(pDest);
      end;
    end;
  end;

みたいな感じで。

サンプルプログラム Edit

おいときます。

問題 Edit

ライセンス Edit

./ライセンス参照。

リンク Edit




Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2010-01-11 Mon 07:34:09 JST (3138d)