PlantUMLに画像を埋め込む手順


はじめに

CircleCIのアイコンをPlantUMLで使用したかったのですが、こちらには無かったので生成しました。
その時の備忘録です。

画像の準備

埋め込みたい画像を用意してください。
注意点として、ファイルサイズが大きい画像だとエンコードは出来ても、デコード時に失敗します。
どのくらいが限界なのか分からないのですが、今回は48x48 pxの画像を用意しました。
また、透明箇所は黒として処理されるようなので、背景が白の画像を用意してください。

グレースケールにエンコード

次に画像をグレースケールにエンコードする必要があります。
ターミナルで下記のコマンドを実行します。

$ java -jar plantuml.jar -encodesprite 16z circleci.png
sprite $circleci [48x48/16z] {
bLPLWiKm20nnPUz_shLN2zHclYgu6mdoiRG_bEIjUG25qdd7gF6EXL9dYL7S5NbSg0L6fZDgL_aAFMZoCFW6MTd2zoYpJOaPOGZyZ79mTV0Bf2tidTzW-8K-
gp-jv5ALb4QdrjJm-KukYp_H_A7CGhpPOUT_dPJuGdTvYS9wcKSPwYQ2KoMrJAKp_XYNqs9lnnmS3VpQCk9ppO7Mbya0Ycb5N2YeVgBXj88Xmh6GBp-TZf7J
z56wxtX7kFDlyT-EOmOawF3Noth4wL5xK7_HUABvkgY7Sb4FQBsXzGps2zgFQB-3ymITL-0y1ESjEC_HVG7k8t3VuViKtzVuFO3V6-WzymC
}

実行結果を.puファイルにコピペします。

sample.pu
@startuml

sprite $circleci [48x48/16z] {
bLPLWiKm20nnPUz_shLN2zHclYgu6mdoiRG_bEIjUG25qdd7gF6EXL9dYL7S5NbSg0L6fZDgL_aAFMZoCFW6MTd2zoYpJOaPOGZyZ79mTV0Bf2tidTzW-8K-
gp-jv5ALb4QdrjJm-KukYp_H_A7CGhpPOUT_dPJuGdTvYS9wcKSPwYQ2KoMrJAKp_XYNqs9lnnmS3VpQCk9ppO7Mbya0Ycb5N2YeVgBXj88Xmh6GBp-TZf7J
z56wxtX7kFDlyT-EOmOawF3Noth4wL5xK7_HUABvkgY7Sb4FQBsXzGps2zgFQB-3ymITL-0y1ESjEC_HVG7k8t3VuViKtzVuFO3V6-WzymC
}

rectangle Sample [
    <$circleci>
]

@enduml

問題無くプレビューにCircleCIのアイコンが表示されました。