Geometry 提供了一种方便的方法来指定几何参数。该对象可以从包含几何规范的 C 字符串或 C++ 字符串初始化。它也可以通过更高效的参数化构造函数进行初始化。
几何规范采用 "<width>x<height>{+-}<xoffset>{+-}<yoffset>" 的形式(其中 width、height、xoffset 和 yoffset 为数字),用于指定对象的尺寸和放置位置。
几何规范中的 width 和 height 部分以像素为单位。xoffset 和 yoffset 部分也以像素为单位,用于指定放置坐标距图像左边缘和上边缘的距离。两种类型的偏移量均从对象的指示边缘到图像的对应边缘进行测量。X 偏移可以以下列方式指定
+xoffset |
对象的左边缘将放置在距图像左边缘xoffset 像素处。 |
-xoffset |
对象的左边缘将放置在图像外部,距图像左边缘xoffset 像素处。 |
Y 偏移具有类似的含义
+yoffset |
对象的顶部边缘将位于图像顶部边缘下方yoffset 像素处。 |
-yoffset |
对象的顶部边缘将位于图像顶部边缘上方yoffset 像素处。 |
偏移量必须成对给出;换句话说,为了指定 xoffset 或 yoffset,两者都必须存在。
ImageMagick 在标准几何字符串中添加了一些限定符,用于调整图像大小。扩展几何字符串的形式为 "<width>x<height>{+-}<xoffset>{+-}<yoffset>{%}{!}{<}{>}"。扩展几何字符串仅应在调整图像大小时使用。将扩展几何字符串用于其他应用程序可能会导致 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 |
通过显式参数构造几何。 |
const string geometry_ |
从 C++ 字符串构造几何 |
||
const char * geometry_ |
从 C 字符串构造几何 |
||
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_ |
对象是否包含有效的几何?可以将其设置为false 以使现有的几何对象无效。 |
bool |
void |
||
operator = |
const Geometry& |
const string geometry_ |
通过 C++ 字符串设置几何 |
operator = |
const Geometry& |
const char * geometry_ |
通过 C 字符串设置几何 |
operator string |
string |
Geometry& |
获取几何的 C++ 字符串表示形式 |
此外,我们还支持以下尚未记录的几何标志:填充区域标志('^')和像素区域计数限制标志('@')。