GLDPNG ver 3.4 クラスリファレンス★目次
- AlphaBitmapAssign
- AlphaBitmapAssignTo
- Assign
- FreeAlphaBitmap
- LoadFromClipboardFormat
- LoadFromFile
- LoadFromStream
- SaveToClipboardFormat
- SaveToFile
- SaveToStream
(注意)
○ここで説明されている以外のクラスメンバー(TGraphic メンバー)は Delphi のヘルプを参考にしてください。また内部で使用しているクラスについての説明はありません。
○説明文で出てくる「グラフィッククラス」とは、現在のバージョンでは TBitmap です。それ以外のグラフィッククラスは対象外となります。
○プロパティ説明で出てくる [Load] や [Save] は、画像データの読み書き時のこのプロパティをどのように内部で使われるかが書かれております。
○すべての説明で「読み込み」と書かれているのは PNG フォーマットの画像データを読み込むことで、「書き込み」と書かれている場合は画像データを PNG フォーマットで書き込むことを示します。
TGLDPNGの継承図(?)
TObject - TPersistent - TGraphic - TGLDPNG
■メソッド
>Assign
[定義]
procedure Assign(source: TPersistent);[説明]
source で指定したグラフィッククラスをコピーします。なお、イメージやアルファチャンネルのリンクはそのままコピーします。
[使用例]
TGLDPNG クラスを作り、そこに C ドライブにある test.png ファイルを読み込み Image1 という名前の TImage コンポーネントにコピーします。
var png: TGLDPNG; begin png:=TGLDPNG.Create; try png.LoadFromFile('c:\test.png'); Image1.Picture.Assign(png); finally png.Free; end; end;
>LoadFromStream
[定義]
procedure LoadFromStream(Stream: TStream);[説明]
Stream で指定されたストリームクラスから PNG データを読み込みます。この時、Image プロパティにグラフィッククラスが指定されている場合、Image プロパティのグラフィッククラスに読み込みます。もし Image プロパティが指定されていない(=nil)場合は、TGLDPNG が内部で保持しているビットマップに読み込みます。
通常、ファイルからの読み込みは LoadFromFile を使用してください。LoadFromFile は、ファイルストリームを作成して LoadFromStream を呼び出しています。
>LoadFromFile
[定義]
procedure LoadFromFile(const filename: string);[説明]
filename で指定したファイルから読み込みます。
LoadFromFile は、指定ファイルのファイルストリームを作成して LoadFromStream を呼び出しているだけです。
[使用例]
TGLDPNG クラスを作り、そこに C ドライブにある test.png ファイルを読み込み Image1 という名前の TImage コンポーネントにコピーします。
var png: TGLDPNG; begin png:=TGLDPNG.Create; try png.LoadFromFile('c:\test.png'); Image1.Picture.Assign(png); finally png.Free; end; end;
>SaveToStream
[定義]
procedure SaveToStream(Stream: TStream);[説明]
指定されているストリームに PNG データを書き込みます。この時、Image プロパティにグラフィッククラスが指定されている場合、Image プロパティのビットマップを書き込みます。もし Image プロパティが指定されていない(=nil)場合は、TGLDPNG が保持しているビットマップを書き込みます。
通常、ファイルへの書き込みは SaveToFile を使用してください。SaveToFile は、ファイルストリームを作成して SaveToStream を呼び出しています。
>SaveToFile
[定義]
procedure SaveToFile(const filename: string);[説明]
filename で指定したファイルへ書き込みます。
SaveToFile は、指定ファイルのファイルストリームを作成して SaveToStream を呼び出しているだけです。
[使用例]
TGLDPNG クラスを作り、C ドライブに test.png ファイルを作り、Image1 という名前の TImage コンポーネントの画像を PNGフォーマットで書き込みます。
var png: TGLDPNG; begin png:=TGLDPNG.Create; try png.Assign(Image1.Picture.Graphic); png.SaveToFile('c:\test.png'); finally png.Free; end; end;
>LoadFromClipboardFormat
[定義]
procedure LoadFromClipboardFormat(AFormat: Word; AData: THandle; APalette: HPALETTE);[説明]
クリップボードから画像データを読み込みます。ただし、読み込めるデータは TBitmap と同じです。PNG フォーマット形式は読み込めません。
>SaveToClipboardFormat
[定義]
procedure SaveToClipboardFormat(var Format: Word; var Data: THandle; var APalette: HPALETTE);[説明]
クリップボードに画像データを書き込みます。ただし、PNG フォーマット形式ではなく Windows 標準の Bitmap(DIB) 形式で書き込みます。
>AlphaBitmapAssign
[定義]
procedure AlphaBitmapAssign(source: TGraphic);[説明]
内部アルファチャンネルのビットマップに指定のグラフィッククラスを書き込みます。
>AlphaBitmapAssignTo
[定義]
function AlphaBitmapAssignTo(dest: TGraphic): boolean;[説明]
内部アルファチャンネルのビットマップを指定グラフィッククラスに書き込みます。内部に存在すれば TRUE 、無ければ FALSE を返します。
dest で nil を指定した場合は内部の存在の有無のみを返します。
[重要]
ver 3.3 から GetAlphaBitmap は AlphaBitmapAssignTo に改名されています。
>FreeAlphaBitmap
[定義]
procedure FreeAlphaBitmap;[説明]
内部アルファチャンネルのビットマップを破棄します。
■プロパティ
>Image
[定義]
property Image: TGLDBmp;[説明]
リンクするビットマップクラスを指定します。この値が nil の場合は内部ビットマップが対象になります。
このプロパティと AlphaBitmap プロパティは主に同じ設定の連続読み込みや書き込みを行う場合に用いると便利です。
[Load]
このプロパティが nil 以外の場合、内部のビットマップではなく指定されたビットマップクラスに画像を読み込みます。
[Save]
このプロパティが nil 以外の場合、内部のビットマップではなく指定されたビットマップクラスの画像を保存対象にします。
>AlphaBitmap
[定義]
property AlphaBitmap: TGLDBmp;[説明]
リンクするアルファチャンネルのビットマップクラスを指定します。この値が nil の場合は内部アルファチャンネルビットマップが対象になります。
このプロパティと Image プロパティは主に同じ設定の連続読み込みや書き込みを行う場合に用いると便利です。
[Load]
このプロパティが nil 以外の場合、内部のビットマップではなく指定されたビットマップクラスにアルファチャンネルを読み込みます。
[Save]
このプロパティが nil 以外の場合、内部のビットマップではなく指定されたビットマップクラスのアルファチャンネルを保存対象にします。
>CompressLevel
[定義]
property CompressLevel: integer;[説明]
ZLIB 圧縮設定です。0 から 9 または -1 が指定できます。0 で 圧縮なし、1 で速度最優先、9 で圧縮率最優先になります。-1 で ZLIB の標準設定になります。
デフォルトでは gplDefault(-1) となっています。
[注意]
ver 3.4 から integer 型に変更になっていますので旧バージョンからの移行では修正が必要な場合があります。
[Load]
使用しません。
[Save]
- gplNone(0) ・・・ 圧縮しません。
- gplDefault(-1) ・・・ 標準圧縮します。
- gplSpeed(1) ・・・ 圧縮速度を優先しますが圧縮率低下します。
- splBest(9) ・・・ 出来る限りの最高の圧縮を行います。
ちなみに gplBest が一番遅いですが圧縮率は一番高いです。
>FilterType
[定義]
property FilterType: TGLDPNGFilterType;[説明]
フィルタ設定です。デフォルトは gpfNone です。
[Load]
使用しません。
[Save]
- gpfJust ・・・ 標準フィルタから最適なフィルタを見つけて使います。
- gpfNone ・・・ フィルタを使用しません。
- gpfSub ・・・ Subフィルタのみを使用します。
- gpfUp ・・・ Upフィルタのみを使用します。
- gpfAvg ・・・ Avgフィルタのみを使用します。
- gpfPaeth ・・・ Paethフィルタのみを使用します。
通常は gpfJust をお使いください。ただし、gpfJust はフィルタ比較のため少々時間がかかります。
>IDATSize
[定義]
property IDATSize: integer;[説明]
IDAT チャンクの1つの最大バイト数です。通常は使用しないでください。ディフォルトでは 32768 です。
[Load]
使用しません。
[Save]
IDAT チャンクを指定の大きさで区切ります。
>InterlaceType
[定義]
property InterlaceType: TGLDPNGInterlaceType;[説明]
インタレース情報です。
- gptNone ・・・ インタレースは使用しません。
- gptAdam7 ・・・ 標準の7パス式のインタレース使用。
ディフォルトでは gptNone です。
[Load]
読み込んだデータの使用していたインタレース情報が入ります。
[Save]
設定されているインタレースで画像を保存します。
>GrayScale
[定義]
property GrayScale: boolean;[説明]
画像のグレイスケール化の有無です。ディフォルトでは FALSE です。
[Load]
読み込んだ画像がグレイスケールかどうかが入ります。TRUE の場合はグレイスケール画像、FALSE の場合はカラー画像となります。
[Save]
TRUE の場合は画像をグレイスケールに変換してから保存します。FALSE の場合はそのまま保存します。
>AlphaChannel
[定義]
property AlphaChannel: boolean;[説明]
アルファチャンネルの有無です。ディフォルトでは FALSE です。
[Load]
読み込んだ画像にアルファチャンネルの有無が入ります。TRUE の場合はアルファチャンネルあり、FALSE の場合はアルファチャンネルなしとなります。
[Save]
TRUE の場合は画像にアルファチャンネルを付加して保存します。FALSE の場合はそのまま保存します。
注意してほしいのは例え内部にあったりリンクされていても、このプロパティが FALSE の場合は無視します。
[重要]
保存時、アルファチャンネルとして保存されるビットマップは、
- 保存対象のビットマップと同じ幅(Width)と高さ(Height)
- ピクセルビット数が8(PixelFormat=pf8bit)
上記の条件を満たしていないと無視します。
>MacBinary
[定義]
property MacBinary: boolean;[説明]
マックバイナリのチェックの有無です。ディフォルトでは TRUE です。
[Load]
TRUE の場合、読み込んだデータの先頭にマックバイナリがあるかどうかを調べてあれば削除します。FALSE の場合は何も行いません。
[Save]
使用ません。
>BGColor
[定義]
property BGColor: COLORREF;[説明]
背景色です。GLD_NONECOLOR(値:-1) なら背景色なしになります。ディフォルトでは GLD_NONECOLOR です。
[注意]
ver 3.4 から 1/16/256色画像のみ Index 指定がサポートされています。Index 指定の場合は、Index 値に $1000000 を OR した値になります。
[Load]
読み込んだ画像の背景色が入ります。
[Save]
背景色としてこのプロパティで指定した色を使います。
>TransColor
[定義]
property TransColor: COLORREF;[説明]
透過色です。GLD_NONECOLOR(値:-1) なら透過色なしになります。ディフォルトでは GLD_NONECOLOR です。
[注意]
ver 3.4 から 1/16/256色画像のみ Index 指定がサポートされています。Index 指定の場合は、Index 値に $1000000 を OR した値になります。
[Load]
読み込んだ画像の透過色が入ります。
[Save]
書き込み時は透過色としてこのプロパティの指定の色を使います。
[重要]
アルファチャンネルがある場合は必ず無視されます。
また、プロパティに値を代入した場合、対象ビットマップの透過色にも設定されます。
>Text
[定義]
property Text: string;[説明]
コメントです。''でコメントなしです。ディフォルトではコメントなしです。
[Load]
読み込んだすべてのコメントデータが連結して入ります。
[Save]
このプロパティの文字列をコメントとして書き込みます。
>Gamma
[定義]
property Gamma: double;[説明]
ガンマ値です。PNG仕様書ではこの値はファイルガンマ値となっています。0.0 でガンマなしです。ディフォルトでは 0.45455 です。
[Load]
読み込んだ画像のガンマ値が入ります。
[Save]
書き込み時はこのプロパティの値をガンマ値として書き込みます。このプロパティはガンマ値というのがわからない場合は絶対に設定しないでください。
[補足]
Windows 環境での標準的なファイルガンマ値は 0.45455 なります。ですがビデオカードやディスプレイなどにより違う場合がありますのであくまで参考値としてお考えください。
詳しい説明は PNG フォーマットの仕様書(Appendix: Gamma Tutorial)をご覧ください。
>ShiftRGB
[定義]
property ShiftRGB: integer;[説明]
色要素の重要なビット数です。0 で最大ビット数まで有効です。ディフォルトでは 0 です。
[Load]
読み込んだ画像に各要素の重要ビット数指定がある場合だけ値が入ります。
[Save]
書き込み時は、このプロパティの値を有効ビット数として書き込みます。通常は設定しないでください。
[補足]
このプロパティ値は、画像状態によって値の捉え方が違います。以下が説明です。なお、説明では最下位のビット番号を 0 として説明しております。
(1)グレイスケール画像の場合は、0〜7 ビットがグレイスケール段階、8〜15 ビットがアルファチャンネルとなっています。
(2)カラー画像の場合は、0〜7 ビットが赤要素、8〜15 ビットが緑要素、16〜23 ビットが青要素、24〜31 ビットがアルファチャンネルとなっています。
(例) //カラー画像の場合の各有効ビット数を抜き出し r:=ShiftRGB and $FF; g:=(ShiftRGB and $FF00) shr 8; b:=(ShiftRGB and $FF0000) shr 16; if (r=5) and (g=6) and (b=5) then ShowMessage('6万色画像です'); if (r=5) and (g=5) and (b=5) then ShowMessage('3万色画像です');有効ビット数とは最大ビット番号からの下位に向かって数えて有効なビット数です。ちょっとわかりにくいかもしれません。例えば 8bitで $6F という場合で有効ビット数が 5 の場合、有効な値は $6F ではなく $68 であるということです。つまり下位3ビットは無効となり、無効になったビットはシフトして消さないといけません。ですので $68 からさらに3ビット右シフトして $B ということになります。
PNG では 6 万色(16bit)や 3 万色(15bit)の画像はすべてフルカラー(24bit)にしなくていけないのです。ですので、そのような画像を読み込み時に復元してもらうためにこの様なデータがあるわけです。なお、ver 3.3からは自動的に変換する機能が追加されましたので特殊な場合以外は設定不要になりました。
>OriginalBitCount
[定義]
property OriginalBitCount: integer;[説明]
読み込んだ画像の本当の1ピクセルのビット数です。
※読み込みのみのプロパティです。
[Load]
読み込んだ画像の本当の1ピクセルのビット数を代入します。
[Save]
使用しません。
>UnitSpecifier
[定義]
property UnitSpecifier: TGLDPNGUnitSpecifier;[説明]
画像の解像度の識別情報です。
- gpuAspect ・・・ アスペクト比
- gpuMeter ・・・ 1ピクセルのメートル数
- gpuInch ・・・ 1ピクセルのインチ数
この単位は WidthSpecific プロパティと HeightSpecific プロパティで使われます。ディフォルトは gpuAspect です。
[Load]
読み込んだ画像の解像度の識別情報が代入されます。
[Save]
このプロパティの識別情報で画像解像度を保存します。
>WidthSpecific
[定義]
property WidthSpecific: integer;[説明]
画像の解像度の横の値です。UnitSpecifier プロパティで指定した識別情報が用いられます。なお、値が 0 の場合は指定なしとなります。
[Load]
読み込んだ画像解像度の横の値が入ります。
[Save]
書き込み時は、UnitSpecifier プロパティの画像解像度で書き込みます。
>HeightSpecific
[定義]
property HeightSpecific: integer;[説明]
画像の解像度の縦の値です。UnitSpecifier プロパティで指定した識別情報が用いられます。なお、値が 0 の場合は指定なしとなります。
[Load]
読み込んだ画像解像度の縦の値が入ります。
[Save]
書き込み時は、UnitSpecifier プロパティの画像解像度で書き込みます。
>Password
[定義]
property Password: string;[説明]
画像データの暗号化・復号化時に用いるパスワードです。暗号・復号をする場合にだけ設定の必要があり、通常は設定しなくでください。
読み込み前に代入しておくと OnPassword が発生しません。
また画像データに暗号をかける場合、書き込み前に必ずパスワードと OnEncode イベントを設定する必要があります。[Load]
画像データが暗号化されている場合、復号化します。
[Save]
指定がされていれば暗号化します。
>NowTime
[定義]
property NowTime: boolean;[説明]
現在の時刻の保存の有無です。ディフォルトでは TRUE です。
[Load]
使用しません。
[Save]
書き込み時は、このプロパティが TRUE の場合現時刻を書き込みます。FALSE の場合は Time プロパティで指定した値が保存されます。
>Time
[定義]
property Time: TPNGTime;[説明]
画像の最終更新時刻です。なお、時間は日本時間ではなくUTC(国際標準時間)です。
[Load]
読み込んだデータが入ります。なお、Year が 0 なら画像データに時間指定がありません。(もしそれでも不安の場合は Month も 0 かどうかを調べると良いでしょう)
[Save]
指定したデータを書き込みます。
[補足]
国際標準時間と日本時間の誤差は +9 時間です。
>Chromaticities
[定義]
property Chromaticities: TPNGChromaticities;[説明]
画像の赤緑青の 1931 CIE x,y 色度、および関連するホワイト点情報です。もし色度がわからない場合は絶対に使用しないでください。
[Load]
読み込んだデータが入ります。
[Save]
指定したデータを書き込みます。
[補足]
色度についてはPNGフォーマットの仕様書(Appendix: Color Tutorial)をご覧ください。
>GIFExtension
[定義]
property GIFExtension: TPNGGIFExtension;[説明]
GIFのグラフィック制御拡張データです。通常は使用しませんがGIFフォーマットとの相互変換の場合には使用するようにしてください。
[Load]
読み込んだデータが入ります。
[Save]
設定されているデータを書き込みます。
>Read16Bit
[定義]
property Read16Bit: boolean;[説明]
16ビットから24ビット画像変換の有無です。ディフォルトは FALSE です。
[Load]
このプロパティの値が TRUE で読み込んだ画像が15ビット(3万色)や16ビット(6万色)の場合そのまま読み込みます。FALSE の場合は24ビット(フルカラー)に変換されます。
[Save]
使用しません。
■イベント
>OnPassword
[定義]
property OnPassword: TGLDPNGPasswordEvent;[引数]
- sender はイベント発生させたクラス
- password は指定するパスワード
[説明]
読み込み時、画像に暗号がかけられている場合で Password プロパティにパスワードが指定されていない時に呼び出されるイベントです。
password 引数にパスワードを指定してください。このイベントはユーザーにパスワードを入力させる場合などで使用します。
[補足]
通常は Password プロパティに設定してから読み込みます。
>OnEncode
[定義]
property OnEncode: TGLDPNGDECodeEvent;[引数]
- sender はイベント発生させたクラス
- pbuf は画像データのライン先頭ポインタ
- buflen はデータの総バイト数
- lineno は現在の呼び出し回数
- password はパスワード
[説明]
書き込み時のみ呼び出されるイベントです。
Password プロパティが空の場合では、暗号化されないためこのイベントは呼び出されません。
>OnDecode
[定義]
property OnDecode: TGLDPNGDECodeEvent;[引数]
- sender はイベント発生させたクラス
- pbuf は画像データのライン先頭ポインタ
- buflen はデータの総バイト数
- lineno は現在の呼び出し回数
- password はパスワード
[説明]
読み込み時のみ呼び出されるイベントです。
■関連定義
>TPNGTime
[定義ユニット]
GLDPNGStream
[定義]
PPNGTime=^TPNGTime; TPNGTime=packed record Year: Word; Month: byte; Day: byte; Hour: byte; Minute: byte; Second: byte; end;[レコード]
- Year は年(西暦)
- Month は月
- Day は日
- Hour は時
- Minute は分
- Second は秒
[説明]
PNG で使われている時刻データの基準は国際標準時間(UTC)です。
なお、Year は必ず4桁でいれ、うるう年への変り目?(うるう秒)の時は Second は 60 を入れます。
>TPNGChromaticities
[定義ユニット]
GLDPNGStream
[定義]
PPNGChromaticities=^TPNGChromaticities; TPNGChromaticities=packed record White_PX: DWORD; White_PY: DWORD; Red_X: DWORD; Red_Y: DWORD; Green_X: DWORD; Green_Y: DWORD; Blue_X: DWORD; Blue_Y: DWORD; end;[レコード]
- White_PX はホワイト点のX
- White_PY はホワイト点のY
- Red_X CIE x,y色度の赤のx
- Red_Y CIE x,y色度の赤のy
- Green_X CIE x,y色度の緑のx
- Green_Y CIE x,y色度の緑のy
- Blue_X CIE x,y色度の青のx
- Blue_Y CIE x,y色度の青のy
[説明]
CIE x,y色度とホワイト点のデータです。すべての値は符号なしで 100000 倍をして入れます。
>TPNGGIFExtension
[定義ユニット]
GLDPNGStream
[定義]
PPNGGIFExtension=^TPNGGIFExtension; TPNGGIFExtension=packed record DisposalMethod: byte; UserInputFlag: byte; DelayTime: Word; end;[レコード]
- DisposalMethod は表示後の処理
- UserInputFlag はユーザー入力の必要の有無
- DelatTime は待機時間(100 ms単位)
[説明]
GIF フォーマットの拡張制御データです。PNG 自体では使われず相互変換用に定義されています。
詳しくは GIF フォーマットの仕様書をご覧ください。
>TGLDPNGDECodeEvent
[定義ユニット]
GLDPNG
[定義]
TGLDPNGDECodeEvent = procedure (sender: TObject; pbuf: pbyte; buflen,lineno: integer; password: string);[引数]
- sender はイベント発生させたクラス
- pbuf は画像データのライン先頭ポインタ
- buflen はデータの総バイト数
- lineno は現在の呼び出し回数
- password はパスワード
[説明]
OnDecode イベントと OnEncode イベントの関数定義です。
>TGLDPNGPasswordEvent
[定義ユニット]
GLDPNG
[定義]
TGLDPNGPasswordEvent = procedure (sender: TObject; var password: string);[引数]
- sender はイベント発生させたクラス
- password は指定するパスワード
[説明]
OnPassword イベントの関数定義です。
(C)2000-2001 Copyright Tarquin All Rights Reserved.