ImageMagick で番号付き画像シリーズを作成する

ImageMagick で番号付き画像シリーズを作成する

番号付きの画像シリーズを作成するにはどうすればいいですか? 何千もの画像に番号を付ける(番号を書き込む)必要があります。

これを行う簡単な方法はありますか:

input.png を変換 - フォント arial - 塗りつぶし 黒 - ポイントサイズ 10 - 注釈 +20+20「1」出力_0001.png

input.png を変換 - フォント arial - 塗りつぶし 黒 - ポイントサイズ 10 - 注釈 +20+20「2」出力_0002.png

....

input.png を変換 - フォント arial - 塗りつぶし 黒 - ポイントサイズ 10 - 注釈 +20+20「1250」出力_1250.png

答え1

ループを使用しますfor:

for i in `seq 1 1250`
do convert input.png -font arial -fill black -pointsize 10 -annotate +20+20 $i output_$(printf %04d $i).png
done

編集: 質問では Windows を使用していることを明記していませんでした。cmd.exe も PowerShell もわからないため、2 つの代替ソリューションを提案します。

Perlディストリビューション(例:http://strawberryperl.comまたはhttp://dwimperl.com)、試してみてください(未テスト):

#!/usr/bin/perl
use v5.14;
for (1 .. 1250) {
    my $x = sprintf "%04d", $_;
    system qw/convert input.png -font arial -fill black -pointsize 10 -annotate +20+20/, $_, "output_$x.png";
}

C コンパイラをお持ちの場合は、試してください (これも未テスト)。

#include<stdio.h>
#include<stdlib.h>

int main(void){
    char cmd[1000];
    int i;
    for(i = 1 ; i <= 1250 ; i++){
        sprintf(cmd, "convert input.png -font arial -fill black -pointsize 10 -annotate +20+20 %d output_%04d.png", i, i);
        system(cmd);
    }
    return 0;
}

答え2

どこにも簡単な答えが見つからなかったので、必要なことを実行するバッチ スクリプトを作成しました。

@echo off
setlocal enableextensions enabledelayedexpansion
set /a count = 0
For %%A in (*.png) DO (
  set /a count += 1
  echo Processing Image !count!
  magick convert -font arial-black -pointsize 250 -fill white -strokewidth 5  -stroke black -gravity southeast -annotate +100+0 "!count!" "%%A" "!count!_%%A"
)
endlocal
pause

バッチ処理を初めて使用する場合は、次の点に注意する必要があります。

For %%A in (*.png) DO (

これは、このフォルダー内の PNG ファイルのみを処理することを意味します。使用しているファイル拡張子に変更してください。

メインコマンドを見てみましょう:

magick convert -font arial-black -pointsize 250 -fill white -strokewidth 5  -stroke black -gravity southeast -annotate +100+0 "!count!" "%%A" "!count!_%%A"

変更できる項目はいくつかあり、フォント、数字の色 (塗りつぶし)、アウトラインの有無 (ストロークとストローク幅。必要ない場合は削除します) などです。重力によって数字が印刷される場所が決まります。この場合、南東は右下隅になることを意味します。

また、数字の大きさを制御する -pointsize も必ず変更する必要があります。番号を付ける必要のある画像はすべて 1920x1080 だったので、値として 250 を選択しましたが、対象画像の大きさに応じてフォント サイズを変更する必要があります。

この...

set /a count = 0

画像に印刷される最初の数字が 1 になることを意味します。必要な開始番号に応じて 0、それより大きい、または小さい数字にしたい場合は、これを -1 に設定します。

将来これを見つけた人の役に立つことを願っています!

答え3

の代わりに:output_1250.png

あなたが望むこと:output_%04d.png

%dは、imagemagick に増分番号 (例 ) を挿入するように指示し01.png 02.png%04d数値を 4 桁にしてゼロを埋め込むことを意味します (例) output_0001.pngoutput_0002.pngoutput_1250.png

この方法では、1 つの変換コマンドのみを使用します。

関連情報