画像を複数の部分に分割

画像を複数の部分に分割

下の写真が一つあります。 2579×2388ピクセルです。左下隅が0,0だとしましょう。この画像では、以下のように複数の画像を作成して作業フォルダに保存したいと思います。各画像のサイズは100×100ピクセルです。各画像は左下の座標に従って保存されます。

  1. 最初の画像の左下隅は0,0にあります。右上隅は100,100で、画像は0-0.jpgとして保存されます。
  2. 2番目の画像の左下隅は10,0にあります。右上が110,100で、画像は10-0.jpgとして保存されます。
  3. 一番下の行が完成すると、Y座標が10だけ移動します。 2行目の場合、最初の画像は0,10にあり、画像は0-10.jpgとして保存されます。

最速の方法は何ですか?私はコマンドラインアプローチを好みます。しかし、最初にどんな種類のツールでも使用できます。

私が知っている限り、現在の画像の場合、約257 * 238の画像に分割されます。ただし、十分なディスク容量とテキスト検出を実行するには、各イメージが必要です。

ここに画像の説明を入力してください。

ベストアンサー1

必要な操作を実行するシェルコード(または)は次のとおりbashですkshzsh

image=clock.jpg

size=$( identify -ping -format "%wx%h" "${image}" )
x_upb=${size%x*}
y_upb=${size#*x}

x_inc=10
y_inc=10
x_tile=100
y_tile=100

for ((x=0; x<x_upb; x+=x_inc))
do
    for ((y=0; y<y_upb; y+=y_inc))
    do
        convert "${image}" -crop "${x_tile}x${y_tile}+${x}+${y}" "$x-$y.jpg"
    done
done

このプログラムは、convertImageMagickプログラムファミリで提供されています。画像ファイルから画像サイズを自動的に抽出することも可能なので、対応するステップも追加しました。 don_crisstiのコメントに基づいて、この目的のためにImageMagickを使用することをお勧めしますidentify(また、ImageMagickプログラムスイートで便利に提供されます)。もちろん、x_upb画像サイズをハードコーディングy_upbし、必要に応じてタイルサイズとタイル移動デルタを調整することもできます。私はコードが説明が必要だと思います。

注:少し調整が必要です。たとえば、タイルはキャップを超えないことがあります(または境界線に近い場合は子写真が小さくなります)。したがって、同じにするには、キャップからタイルのサイズを減らす必要があります。サブイメージサイズ フルイメージの上。

注:私が知っている限り、「ジオメトリ」は左上隅の(0,0)から始まる方向を持つと定義されています。別の方向が必要な場合は、そのインターフェイス定義に合わせて数学を直接実行する必要があります。一般的なコードパターンは、上限に応じて対応する座標を指定することです。たとえば、変形部分、つまり(ループ)変数になります$((y_upb - y))y

おすすめ記事