Geometryはジオメトリ引数を指定するための便利な手段を提供します。オブジェクトはジオメトリ仕様を含むC文字列またはC++文字列から初期化できます。さらに、より効率的なパラメータ化されたコンストラクタによって初期化することもできます。
ジオメトリの仕様は、`"<幅>x<高さ>{+-}<xオフセット>{+-}<yオフセット>"` (ここで、`幅`、`高さ`、`xオフセット`、`yオフセット`は数値)としてオブジェクトのサイズおよび配置の場所を指定します。
ジオメトリ仕様の`幅`および`高さ`の部分はピクセル単位で測定されます。`xオフセット`および`yオフセット`の一部もピクセル単位で測定され、配置座標を画像の左と上および各々の端からの距離を指定するために使用されます。オフセットの両方のタイプは、オブジェクトの示された端から画像の対応する端まで測定されます。Xオフセットは次の方法で指定できます。
+xオフセット |
オブジェクトの左端は左端の画像からxオフセットピクセル内側に配置されます。 |
-xオフセット |
オブジェクトの左端は、左端の画像からxオフセットピクセル外側に配置されます。 |
Yオフセットには同様の意味があります。
+yオフセット |
オブジェクトの上端は、上端の画像からyオフセットピクセル以下に配置されます。 |
-yオフセット |
オブジェクトの上端は、上端の画像からyオフセットピクセル上に配置されます。 |
オフセットはペアとして与えられる必要があります。言い換えれば、`xオフセット`または`yオフセット`のいずれかを指定するには、両方が存在する必要があります。
ImageMagickでは、画像をリサイズするときに使用する標準ジオメトリ文字列に多くの修飾子が追加されています。拡張ジオメトリ文字列の形式は`"<幅>x<高さ>{+-}<xオフセット>{+-}<yオフセット>{%}{!}{<}{>}"`です。拡張ジオメトリ文字列は画像のサイズ変更時のみ使用してください。他のアプリケーションで拡張ジオメトリ文字列を使用すると、API呼び出しが失敗する可能性があります。使用可能な修飾子は次の表に示されています。
ImageMagickのジオメトリ修飾子
修飾子 |
説明 |
% |
幅と高さを現在のサイズのパーセンテージとして解釈します。 |
! |
元のアスペクト比を無視して、幅と高さに正確にリサイズします。 |
< |
画像がジオメトリ仕様よりも小さい場合にのみ、サイズを変更します。 |
> |
画像がジオメトリ仕様よりも大きい場合にのみ、サイズを変更します。 |
最初の文字が数値でない場合、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 |
|
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フラグである、塗りつぶし領域のフラグ('^')、およびピクセル領域の個数制限フラグ('@')もサポートしています。