ImageMagickの組み込みパターン一覧
ImageMagickの組み込みパターンの一覧を改めて確認して、整理してみました。
メッシュ状の画像など規則的なパターン画像が欲しいときに、激しく重い-fxオペレータで生成していたりしたのですが、単純な形状なら組み込みパターンを活かせそうなので。
公式の説明
ImageMagick公式では、以下のFormatのページに"Built-in Patterns"として掲載されています。
Formats @ ImageMagick
ソース
ソースコード上は、pattern.cにこれらのパターンは実装(というか定義)されています。
ImageMagick/pattern.c at 1c3dd700bbb17837ee6f540aff3eafc76262accf · ImageMagick/ImageMagick · GitHub
実例
各パターンを64x64のサイズで出力した例は以下の通り。
| Pattern name | Pattern image | Notes |
|---|---|---|
| CIRCLES | ![]() |
円形 |
| OCTAGONS | ![]() |
8角形 |
| HEXAGONS | ![]() |
6角形 |
| CHECKERBOARD | ![]() |
市松模様 |
| FISHSCALES | ![]() |
うろこ模様 |
| SMALLFISHSCALES | ![]() |
細かいうろこ模様 |
| BRICKS | ![]() |
レンガ模様 |
| VERTICALBRICKS | ![]() |
縦積みレンガ模様 |
| RIGHTSHINGLE | ![]() |
左に傾斜した屋根板模様 |
| LEFTSHINGLE | ![]() |
右に傾斜した屋根板模様 |
| VERTICALLEFTSHINGLE | ![]() |
縦向きの右下がり屋根板模様 |
| VERTICALRIGHTSHINGLE | ![]() |
縦向きの右上がり屋根板模様 |
| CROSSHATCH | ![]() |
網目 |
| CROSSHATCH30 | ![]() |
30度傾斜した網目 |
| CROSSHATCH45 | ![]() |
45度傾斜した網目 |
| HORIZONTALSAW | ![]() |
水平三角波 ※sawと定義されているが実態はtriangle |
| VERTICALSAW | ![]() |
垂直三角波 ※sawと定義されているが実態はtriangle |
| LEFT30 | ![]() |
30度傾斜した右下がり斜線 |
| RIGHT30 | ![]() |
30度傾斜した右上がり斜線 |
| LEFT45 | ![]() |
45度傾斜した右下がり斜線 |
| RIGHT45 | ![]() |
45度傾斜した右上がり斜線 |
| HORIZONTAL | ![]() |
水平線 |
| HORIZONTAL2 | ![]() |
水平線2 |
| HORIZONTAL3 | ![]() |
水平線3 |
| VERTICAL | ![]() |
垂直線 |
| VERTICAL2 | ![]() |
垂直線2 |
| VERTICAL3 | ![]() |
垂直線3 |
| GRAY0 | ![]() |
完全な黒(#000000) |
| GRAY5 | ![]() |
白・黒画素比率 = 48:976 ⇒約95.3%のグレー |
| GRAY10 | ![]() |
白・黒画素比率 = 100:924 ⇒約90.2%のグレー |
| GRAY15 | ![]() |
白・黒画素比率 = 148:876 ⇒約85.5%のグレー |
| GRAY20 | ![]() |
白・黒画素比率 = 204:820 ⇒約80.1%のグレー |
| GRAY25 | ![]() |
白・黒画素比率 = 256:768 ⇒75%のグレー |
| GRAY30 | ![]() |
白・黒画素比率 = 308:716 ⇒約69.9%のグレー |
| GRAY35 | ![]() |
白・黒画素比率 = 356:668 ⇒約65.2%のグレー |
| GRAY40 | ![]() |
白・黒画素比率 = 408:616 ⇒約60.2%のグレー |
| GRAY45 | ![]() |
白・黒画素比率 = 460:564 ⇒約55.1%のグレー |
| GRAY50 | ![]() |
白・黒画素比率 = 512:512 ⇒50%のグレー |
| GRAY55 | ![]() |
白・黒画素比率 = 564:460 ⇒約44.9%のグレー |
| GRAY60 | ![]() |
白・黒画素比率 = 616:408 ⇒約39.8%のグレー |
| GRAY65 | ![]() |
白・黒画素比率 = 668:356 ⇒約34.8%のグレー |
| GRAY70 | ![]() |
白・黒画素比率 = 716:308 ⇒約30.1%のグレー |
| GRAY75 | ![]() |
白・黒画素比率 = 768:256 ⇒25%のグレー |
| GRAY80 | ![]() |
白・黒画素比率 = 820:204 ⇒約19.9%のグレー |
| GRAY85 | ![]() |
白・黒画素比率 = 872:152 ⇒約14.8%のグレー |
| GRAY90 | ![]() |
白・黒画素比率 = 924:100 ⇒約9.8%のグレー |
| GRAY95 | ![]() |
白・黒画素比率 = 976:48 ⇒約4.7%のグレー |
| GRAY100 | ![]() |
完全な白(#FFFFFF) |
| HS_BDIAGONAL | ![]() |
45度傾斜した右上がり斜線 ※RIGHT45と同一 |
| HS_CROSS | ![]() |
網目 ※CROSSHATCHとは線の位置が異なる |
| HS_DIAGCROSS | ![]() |
45度傾斜した網目 ※CROSSHATCH45とは線の位置が異なる |
| HS_FDIAGONAL | ![]() |
45度傾斜した右下がり斜線 ※LEFT45と同一 |
| HS_HORIZONTAL | ![]() |
水平線 ※HORIZONTALとは線の位置・間隔が異なる |
| HS_VERTICAL | ![]() |
垂直線 ※VERTICALとは線の位置・間隔が異なる |
備考
CIRCLES
ソースコードを見れば明らかですが、他のパターン同様に単なるバイト列として定義されています。すなわち拡大すれば単純に荒くなるため、任意の半径の円のパターンとしては使えません。
CHECKERBOARD
他の全てのパターンは白と黒(#FFFFFFと#000000)だけのピクセルで構成されていますが、CHECKERBOARDのみ#999999と#666666のピクセルで構成されています。
画像処理の都合上、他と同様の#FFFFFFと#000000のパターンが欲しい場合は、単純に正規化*1してしまえば#FFFFFFと#000000の二値にできます。
GRAY*
(グレイスケールではなく、)白か黒かの二値しかないモノクロで階調表現するのに使えるパターンです。
上表に示したように各パターンの白画素(#FFFFFF)と黒画素(#000000)をカウントし、その比率を算出してみると、概ねGRAYの後に示された数値に近い比率の白画素が含まれていることが確認できます。
参考までに、ImageMagickのテキスト出力を利用して、以下のようなコマンドを叩けば画像中で使用されている色と、その色のピクセル数をカウントできます。
# 構成画素を色別にカウントする例 $ convert pattern:GRAY5 txt: | awk 'NR>1 {print $3}' | sort | uniq -c 976 #000000 48 #FFFFFF
HS_*
蛇足ですが、HS_*は似たようなパターンがあるのになぜ定義されているのだろうかと疑問に思いました。
また、"HS_"というプレフィクスは、座標0,0が罫線ではなく空白であり、パターンの半分の空白から始まることからHalf Spaceの意味だろうか?でも、そうではないパターンもあるし???などと混乱しましたが、ソースコードのコメントによれば、Windows GDIで定義されているハッチブラシ(Hatch Brush)パターンと同じ名称(とパターン)にしているようです。
MSDNのドキュメントから察するに、"hatch style”の意味で"HS_"というプレフィクスが付いているような感じがします。
CreateHatchBrush function (Windows)
以上。
*1:-normalizeオプションを指定する。





















































