Magick::Geometry

Geometry 提供了一种方便的方法来指定几何参数。该对象可以从包含几何规范的 C 字符串或 C++ 字符串初始化。它也可以通过更高效的参数化构造函数进行初始化。

几何规范

几何规范采用 "<width>x<height>{+-}<xoffset>{+-}<yoffset>" 的形式(其中 widthheightxoffsetyoffset 为数字),用于指定对象的尺寸和放置位置。

几何规范中的 widthheight 部分以像素为单位。xoffsetyoffset 部分也以像素为单位,用于指定放置坐标距图像左边缘和上边缘的距离。两种类型的偏移量均从对象的指示边缘到图像的对应边缘进行测量。X 偏移可以以下列方式指定

+xoffset

对象的左边缘将放置在距图像左边缘xoffset 像素处。

-xoffset

对象的左边缘将放置在图像外部,距图像左边缘xoffset 像素处。

Y 偏移具有类似的含义

+yoffset

对象的顶部边缘将位于图像顶部边缘下方yoffset 像素处。

-yoffset

对象的顶部边缘将位于图像顶部边缘上方yoffset 像素处。

偏移量必须成对给出;换句话说,为了指定 xoffsetyoffset,两者都必须存在。

ImageMagick 对几何规范的扩展

ImageMagick 在标准几何字符串中添加了一些限定符,用于调整图像大小。扩展几何字符串的形式为 "<width>x<height>{+-}<xoffset>{+-}<yoffset>{%}{!}{<}{>}"。扩展几何字符串应在调整图像大小时使用。将扩展几何字符串用于其他应用程序可能会导致 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

通过显式参数构造几何。

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++ 字符串表示形式

此外,我们还支持以下尚未记录的几何标志:填充区域标志('^')和像素区域计数限制标志('@')。