0

ImageMagick のドキュメントでは、有効な画像ジオメトリ引数の形式は次のとおりです。

size    General description (actual behavior can vary for different options and settings)
scale%  Height and width both scaled by specified percentage.
scale-x%xscale-y%   Height and width individually scaled by specified percentages. (Only one % symbol needed.)
width   Width given, height automagically selected to preserve aspect ratio.
xheight Height given, width automagically selected to preserve aspect ratio.
widthxheight    Maximum values of height and width given, aspect ratio preserved.
widthxheight^   Minimum values of width and height given, aspect ratio preserved.
widthxheight!   Width and height emphatically given, original aspect ratio ignored.
widthxheight>   Shrinks an image with dimension(s) larger than the corresponding width and/or height argument(s).
widthxheight<   Enlarges an image with dimension(s) smaller than the corresponding width and/or height argument(s).
area@   Resize image to have specified area in pixels. Aspect ratio is preserved.
{size}{offset}  Specifying the offset (default is +0+0). Below, {size} refers to any of the forms above.
{size}{+-}x{+-}y    Horizontal and vertical offsets x and y, specified in pixels. Signs are required for both. Offsets are affected by ‑gravity setting. Offsets are not affected by % or other size operators.

たとえば100%、 は有効なフォームです (scale%上記のリストの最初のフォームと一致します)。ただし、Dragonflyはこの正規表現を使用してジオメトリ引数を検証する100%ため、Dragonfly では受け入れられません。

^\d*x\d*[><%^!]?$|^\d+@$

基本的に のないものxは、Dragonfly では無効と見なされます。ImageMagick のドキュメントを誤解していますか、それとも Dragonfly の正規表現が間違っていますか?

4

2 に答える 2

1

Imagemagick のドキュメントを正しく理解している。Dragonfly は明らかに 'scale%' ジオメトリ形式をサポートしていません。Dragonfly は、その RESIZE_GEOMETRY 正規表現を次のように変更できます。

^\d*x\d*[><%^!]?$|^\d+[@%]$

または、「100x%」のようなジオメトリ仕様を指定することで回避できます。

于 2014-03-17T18:02:54.170 に答える
0

実際、この正規表現を使用してジオメトリ マッチング システムを作成できると思います (警告、巨大な正規表現)。

(?<size>(?<w>(?:\d*(?:\.\d+)?)?%?)?(?:x(?<h>(?:\d*(?:\.\d+)?)?%?))?)(?<aspect>[!><@^])?(?<offset>(?<x>[+-]\d*(?:\.\d+)?)?(?<y>[+-]\d*(?:\.\d+)?)?)

幸いなことに、この gistで正規表現を見つける方法を説明しています。エラーがあれば、遠慮なく言ってください。

于 2015-08-31T16:07:13.580 に答える