私は長い間、各コンピューターにスクリーンセーバーとその番号を付けたいと思っていましたが、各コンピューターを個別に構成したくありませんでした。 これで、「J:\ _ rs \ scrsvr \ %rs_machine% .jpg」というパスを一気に書くことができ、絵を描くのは簡単なことです。
しかし、シリアル番号の画像を含む一連の写真を入手するにはどうすればよいですか?
手で描くのは愚かでスポーティではありません。 二度目は手を上げられないので、私の人生はすぐに起こることに我慢しなければなりません。
プログラムを書くのは失礼で簡単です。 特に、ほとんどすべてのプログラムがすでに私たちの前に書かれており、適切なプログラムを見つける必要があることを考慮してください。
ソリューションをできるだけシンプルで柔軟にしたかったのです。 しかし、これまでに未開拓の手段や技術を取り入れて、興味深く有用なものにすることが不可欠です。
利用可能な手段のうち、ホームLinuxしかなかったため、アクションプランは次のように選択されました。
- なじみのないImage Magicを使用して、入力に渡す必要があるキーを見つけます。これにより、可能な限り最大のフォントで碑文を含む特定の解像度の画像を受け取ることができます(遠くから見ることができます)。
- Bashを使用して 、以前は不明だったシェルスクリプトを 、パラメーター間のループカウンターを使用した周期的なコマンド起動によって整理する方法が明らかになるまで学習します。
- 1と2を接続して、imagicで指定されたパラメーターで一連の画像を作成するスクリプトを記述しようとします。
イメージマジック
マニュアルには特別なセクション「 ImageMagick Text to Image Handling 」があり、画像上のテキストの適用に関するすべてのパラメーターについて説明しています。 私が役立ったすべてを説明するわけではありませんが、1つの興味深い機能のみに焦点を当てます。
私の注意は、すぐに画像に最適なサブセクションに引き付けられました。 -pointsize (フォントサイズ)の代わりに-sizeパラメーター(キャンバスサイズ)を使用すると、 imagicは画像をテキストで完全に埋めるために最大フォントサイズを選択します。 一見、これはまさにあなたが必要とするものです。
私達は試みます:
convert -size 1024x768 -background black -fill white -gravity center label:42 image.jpg
![42](https://habrastorage.org/storage/habraeffect/44/29/4429fd59378dc34a4f626a14ac559778.png)
結果は憂鬱です。 まず、画像がほぼ20秒間生成されます。 どうやらIMはいくつかの画像を生成し、サイズを順次増やしますが、碑文は指定されたサイズに収まります。
第二に-モニター上の碑文は中央に配置されません。 -gravity centerパラメーターを-trim + repageに置き換えて不要なものをすべて削除すると、タスクで指定されたサイズよりも小さいサイズの画像が表示されます 。
convert -size 1024x768 -background black -fill white -trim +repage label:42 image.jpg
![トリミング42](https://habrastorage.org/storage/habraeffect/97/d4/97d424106646b185829f7c0cc7bc2683.png)
サイズを手動で選択する必要があります。 この場合、最初の実施形態では下からのインデントが理由なく表示されないため、imagicがテキストを挿入する必要がある座標を指定する機能が必要になる場合があります。
ラベルのほかに、キャプション、ドロー、注釈の描画方法がいくつかあります。 ただし、キャプションでは、登録する座標を指定することはできません。また、ドキュメンテーションに基づいて、Drawは曲がって古くなっています。
Annotateを使用したラベル付けは既存の画像でのみ可能であるため、キャンバスが自動的に作成されるようにxcパラメーターを追加で指定する必要がありました。 キャンバスの色も同じパラメーターで指定できるため、-backgroundパラメーターは使用できなくなりました。
convert -size 1024x768 xc:black -pointsize 900 -fill white -gravity center -annotate +0+0 "42" image.jpg
![42 xc](https://habrastorage.org/storage/habraeffect/64/68/646892067906c9d366ed272b0c4aa6e9.png)
最初のケースとほぼ同じでしたが、写真の生成に1秒もかからず、碑文の相対オフセットを示すことが可能になりました。 以下のテキストを移動して使用します。
convert -size 1024x768 xc:black -pointsize 900 -fill white -gravity center -annotate +0+70 "42" image.jpg
![42決勝](https://habrastorage.org/storage/habraeffect/70/0f/700ffbd84182654868bf8e770820cd9a.png)
まあ、それはあなたが必要なものです。 Image Magicを使用すると、これで終了できます。
Bashスクリプト
以前、私は特にBashで何かを書くことは言うまでもなく、Bashでスクリプトを読んでいませんでした。 もちろん、この言語の一般的な考え方はありましたが、経験はまったくありませんでした。
すばらしいガイドAdvanced Bash Scripting ( eng 、 rus )が起動を助けました。これは、私が知る限り、紙の形式でも公開されています。 忍耐力は最初の数章で十分であり、変数を整理した後、すぐにサイクルに進みました。
サイクルはいくつかの方法で実行できることがわかりました。 その簡潔さと明快さで、私はこれが好きでした:
#!/bin/bash
for i in $(seq 1 10)
do
echo "Hello $i times"
done
多くのスクリプト言語では、インタープリターに「逆アポストロフィ」で囲まれたシステムコマンドを実行するように依頼できます。また、バックスラッシュ\で改行をエスケープすることにより、コンソールでも複数行のコマンドを入力できます。
これで、すべてをまとめることができます。
#!/bin/bash
for i in $(seq 1 50)
do
`convert \
-size 1024x768 \
xc:black \
-pointsize 900 \
-fill white \
-gravity center \
-annotate +0+70 "$i" \
${i}.jpg`
done
わかった!
![スクリプト結果](https://habrastorage.org/storage/b5c368ad/12603aaf/eff6c7d8/2bf1f702.png)
その後、しばらくの間imagicをいじってみましたが、成功した例のおかげで、クラブの名前「Neon」に対応する数字が輝きました:-)
![ネオン](https://habrastorage.org/storage/5729f618/60a8690a/d9d93d29/92047a29.jpg)
親切な結果
![42 :-)](https://habrastorage.org/storage/9e07ed0f/729cff1a/41885c42/80a97eef.jpg)
![23-25](https://habrastorage.org/storage/b3fafded/07b97826/64d64af8/56fb3225.jpg)
![4-8](https://habrastorage.org/storage/5a6dbb05/cb24f58e/544a1822/19895a2b.jpg)