Magick::Geometry

Geometryはジオメトリ引数を指定するための便利な手段を提供します。オブジェクトはジオメトリ仕様を含むC文字列またはC++文字列から初期化できます。さらに、より効率的なパラメータ化されたコンストラクタによって初期化することもできます。

ジオメトリの仕様

ジオメトリの仕様は、`"<幅>x<高さ>{+-}<xオフセット>{+-}<yオフセット>"` (ここで、`幅`、`高さ`、`xオフセット`、`yオフセット`は数値)としてオブジェクトのサイズおよび配置の場所を指定します。

ジオメトリ仕様の`幅`および`高さ`の部分はピクセル単位で測定されます。`xオフセット`および`yオフセット`の一部もピクセル単位で測定され、配置座標を画像の左と上および各々の端からの距離を指定するために使用されます。オフセットの両方のタイプは、オブジェクトの示された端から画像の対応する端まで測定されます。Xオフセットは次の方法で指定できます。

+xオフセット

オブジェクトの左端は左端の画像からxオフセットピクセル内側に配置されます。

-xオフセット

オブジェクトの左端は、左端の画像からxオフセットピクセル外側に配置されます。

Yオフセットには同様の意味があります。

+yオフセット

オブジェクトの上端は、上端の画像からyオフセットピクセル以下に配置されます。

-yオフセット

オブジェクトの上端は、上端の画像からyオフセットピクセルに配置されます。

オフセットはペアとして与えられる必要があります。言い換えれば、`xオフセット`または`yオフセット`のいずれかを指定するには、両方が存在する必要があります。

ジオメトリの仕様に対するImageMagickの拡張機能

ImageMagickでは、画像をリサイズするときに使用する標準ジオメトリ文字列に多くの修飾子が追加されています。拡張ジオメトリ文字列の形式は`"<幅>x<高さ>{+-}<xオフセット>{+-}<yオフセット>{%}{!}{<}{>}"`です。拡張ジオメトリ文字列は画像のサイズ変更時のみ使用してください。他のアプリケーションで拡張ジオメトリ文字列を使用すると、API呼び出しが失敗する可能性があります。使用可能な修飾子は次の表に示されています。

ImageMagickのジオメトリ修飾子

修飾子

説明

%

幅と高さを現在のサイズのパーセンテージとして解釈します。

!

元のアスペクト比を無視して、幅と高さに正確にリサイズします。

<

画像がジオメトリ仕様よりも小さい場合にのみ、サイズを変更します。

>

画像がジオメトリ仕様よりも大きい場合にのみ、サイズを変更します。

ジオメトリ仕様に対するPostscriptページサイズの拡張機能

最初の文字が数値でない場合、Geometryコンストラクタに提供されるジオメトリ文字列の仕様は、Postscriptページサイズのニックネームと見なされます。Geometryコンストラクタは、これらのページサイズの仕様を内部オブジェクト形式に変換する前に、同等の数値ジオメトリ文字列仕様(オフセットコンポーネントがある場合は保持)に変換します。Postscriptページサイズの仕様は、そのサイズのページを埋めるために必要なピクセルジオメトリの省略形です。米国で使用されている11x17インチのページサイズは数字で始まるため、Postscriptページサイズのニックネームとしてはサポートされていません。代わりに、11x17の出力が必要な場合はジオメトリ仕様`"792x1224>"`を代用します。

Postscriptページサイズの仕様の例として、`"letter+43+43>"`があります。

Postscriptページサイズのニックネーム

Postscriptページサイズのニックネーム

同等の拡張ジオメトリ仕様

Ledger

1224x792>

Legal

612x1008>

Letter

612x792>

LetterSmall

612x792>

ArchE

2592x3456>

ArchD

1728x2592>

ArchC

1296x1728>

ArchB

864x1296>

ArchA

648x864>

A0

2380x3368>

A1

1684x2380>

A2

1190x1684>

A3

842x1190>

A4

595x842>

A4Small

595x842>

A5

421x595>

A6

297x421>

A7

210x297>

A8

148x210>

A9

105x148>

A10

74x105>

B0

2836x4008>

B1

2004x2836>

B2

1418x2004>

B3

1002x1418>

B4

709x1002>

B5

501x709>

C0

2600x3677>

C1

1837x2600>

C2

1298x1837>

C3

918x1298>

C4

649x918>

C5

459x649>

C6

323x459>

Flsa

612x936>

Flse

612x936>

HalfLetter

396x612>

Geometryの手順

Geometryには、ストリング、パラメーターのセット、または属性からその値を初期化する方式が用意されています。Geometryで使用できる方式は、次の表に示されています

Geometryの手順

方法

戻り値の型

シグネチャ

説明

geometry

 

size_t width_, size_t height_, ssize_t xOff_ = 0, ssize_t yOff_ = 0, bool xNegative_ = false, bool yNegative_ = false

明示的なパラメーターからgeometryを構築します。

定数のstring geometry_

C++のstringからgeometryを構築します

定数のchar* geometry_

Cのstringからgeometryを構築します

width

void

size_t width_

size_t

void

height

void

size_t height_

高さ

size_t

void

xOff

void

ssize_t xOff_

原点からのXオフセット

ssize_t

void

yOff

void

ssize_t yOff_

原点からのYオフセット

size_t

void

xNegative

void

bool xNegative_

Xオフセットの符号は負ですか?(Xの原点は右)

bool

void

yNegative

void

bool yNegative_

Yオフセットの符号は負ですか?(Yの原点は下)

bool

void

percent

void

bool percent_

幅と高さはパーセンテージで表されます

bool

void

aspect

void

bool aspect_

アスペクト比を維持せずにリサイズします(!)

bool

void

greater

void

bool greater_

画像がサイズよりも大きい場合のリサイズ(>)

bool

void

less

void

bool less_

画像がサイズよりも小さい場合のリサイズ(<)

bool

void

isValid

void

bool isValid_

オブジェクトには有効なgeometryが含まれていますか。既存のgeometryオブジェクトを無効にするためにfalseに設定できます。

bool

void

operator =

定数のGeometry&

定数のstring geometry_

C++のstringからgeometryを設定します

operator =

定数のGeometry&

定数のchar* geometry_

Cのstringからgeometryを設定します

operator string

string

Geometry&

geometryのC++のstring表現を取得します

さらに、ドキュメント化されていないgeometryフラグである、塗りつぶし領域のフラグ('^')、およびピクセル領域の個数制限フラグ('@')もサポートしています。