it-swarm-ja.tech

GIMPは画像を複数の画像に分割できますか?

最近、一度に複数の写真をスキャンしています。現在、複数のJPEGがあり、それぞれに複数の写真が含まれています。

GIMPを使用して、jpgを3つの小さなファイルに「分割」できますか?

以前使用していたのは、jpgを3回コピーし、コピーごとに異なる画像をトリミングすることです。

これを行うにはもっと簡単な方法があるはずです!

編集:それを行うことができるプラグインはありますか?私は周りを見回しましたが、画像を同じサイズの断片に「カット」するプラグインしか見つかりませんでした。

20
Manu

ImageMagick 。これはコマンドラインツールですが、驚くほど強力で柔軟なので、学ぶのに努力する価値があります。例えば:

convert -extract 1024x1024+0+0 original.png target.png

どこ:

  • 1024x1024は、必要なクロップの幅と高さです
  • + 0 + 0は、元の画像へのxおよびyオフセットです

これらのコマンドの数十を.cmdファイルに貼り付けて、簡単に実行できます。

ImageMagickのドキュメントを見て、これらのコマンドに何千ものオプションがあることを確認してください。非常に強力なツールであり、オープンソースでもあります!

22
Zond

あなたはこのようにそれを行うことができます:

  • 長方形で画像を選択
  • 編集->コピー
  • 編集->貼り付け->新しい画像
15

MichaelのPaste as-> New Imageは機能しますが、コンテンツを複製しないように、通常はCopyではなくCutを使用しています。

6
Bob Weber

GIMPでは、ガイド行とギロチン(ペーパーカッター)ツールを使用して、行と列の方法で画像を分割できます。から GIMPユーザーマニュアル

画像グリッドに加えて、GIMPは、より柔軟なタイプの位置決め補助手段、ガイドも提供します。これらは、作業中に画像上に一時的に表示できる水平線または垂直線です。

ガイドを作成するには、画像ウィンドウのルーラーの1つをクリックし、マウスボタンを押したままガイドを引き出します。ガイドは、ポインタに続く青い破線として表示されます。ガイドを作成するとすぐに、「移動」ツールがアクティブになり、マウスポインターが移動アイコンに変わります。

ギロチンコマンドは、画像のガイドに基づいて、現在の画像をスライスします。これは、ギロチン(ペーパーカッター)を使用してオフィスでドキュメントをスライスするのと同じように、各ガイドに沿ってイメージをカットし、ピースから新しいイメージを作成します。このコマンドには、イメージメニューバーからImage->Transformからアクセスできます。 ->ギロチン

6
Milche Patern

私は、うまく機能する Divide Scanned Images プラグインを使用しています。

更新: https://github.com/FrancoisMalan/DivideScannedImages

5
Raymond

それを素早く作るためにあなたは使うことができます:

CtrlD 画像を複製する
ShiftC 画像をトリミングする
CtrlS 保存する

5
nekrum

現在の選択をJPG(固定品質)として保存する単純なGimpプラグインを作成しました。

これには、各写真を手動で選択する必要があります。出力ファイル名は自動生成されます。

入手/変更 GitHub

Screenshot

Input vs output

2
Andy Joiner

Zondからの回答に基づいてスクリプトを作成しました。ユーザー入力パラメータに従って画像ファイルを並べて表示します。スクリプトは次のとおりです。

# Usage:
#
# sh crop.sh <tileset_image_file> <tileset_image_width> <tileset_image_height> <tile_size_X> <tile_size_y>
#
# Example:
#   sh crop.sh tileset01.png 128 192 32 32
#
# - Will generate 24 tiles of 32x32 named tile1.png, tile2.png, ..., tile24.png
#

# Your tileset file. I've tested with a png file.
Origin=$1

# Control variable. Used to name each tile.
counter=0

# Location of the tool that we are using to extract the files. I had to create a shortcut of the tool in the same folder as the script.
program=convert.exe

# The size of the tile (32x32)
tile_size_x=$4
tile_size_y=$5

# Number of rows (horizontal) in the tileset.
rows=$2
let rows/=tile_size_x

# Number of columns (vertical) in the tileset.
columns=$3
let columns/=tile_size_y

# Tile name prefix.
prefix=tile

# Tile name sufix.
sufix=.png

echo Extracting $((rows * $columns)) tiles...

for i in $(seq 0 $((columns - 1))); do

    for j in $(seq 0 $((rows - 1))); do

        # Calculate next cut offset.
        offset_y=$((i * tile_size_y))
        offset_x=$((j * tile_size_x))

        # Update naming variable.
        counter=$((counter + 1))

        tile_name=$prefix$counter$sufix

        echo $program -extract $tile_size"x"$tile_size"+"$offset_x"+"$offset_y $Origin $tile_name
        $program -extract $tile_size_x"x"$tile_size_y"+"$offset_x"+"$offset_y $Origin $tile_name
    done
done
echo Done!

このスクリプトは、ImageMagickの「sh」および「convert」ツールで動作します。 windows cmdがshをネイティブな方法で提供しているかどうかはわかりません。この場合、 このトピック を見てshを機能させることができます。さらに、ImageMagickがシステムにインストールされていて、スクリプトが実行されるフォルダーと同じフォルダーにある変換ツールのショートカットが必要です。

  • 私はpng画像でのみテストしました。それが役に立てば幸い。
1
Vitor

LinuxのVitorスクリプトとsh。 3行変更するだけで済みました。

#!/usr/bin/env sh
# Usage:
# sh crop.sh <tileset_image_file> <tileset_image_width> <tileset_image_height> <tile_size_X> <tile_size_y>
#
# Example:
#   sh crop.sh tileset01.png 128 192 32 32
#
# - Will generate 24 tiles of 32x32 named tile1.png, tile2.png, ..., tile24.png
#

# Your tileset file. I've tested with a png file.
Origin=$1

# Control variable. Used to name each tile.
counter=0

# Location of the tool that we are using to extract the files. I had to create a shortcut of the tool in the same folder as the script.
program=convert

# The size of the tile (32x32)
tile_size_x=$4
tile_size_y=$5

# Number of rows (horizontal) in the tileset.
rows=$2
rows=$((rows / $tile_size_x))

# Number of columns (vertical) in the tileset.
columns=$3
columns=$((columns / $tile_size_y))

# Tile name prefix.
prefix=tile

# Tile name sufix.
sufix=.png

echo Extracting $((rows * $columns)) tiles...

for i in $(seq 0 $((columns - 1))); do

    for j in $(seq 0 $((rows - 1))); do

        # Calculate next cut offset.
        offset_y=$((i * tile_size_y))
        offset_x=$((j * tile_size_x))

        # Update naming variable.
        counter=$((counter + 1))

        tile_name=$prefix$counter$sufix

        echo $program -extract $tile_size"x"$tile_size"+"$offset_x"+"$offset_y $Origin $tile_name
        $program -extract $tile_size_x"x"$tile_size_y"+"$offset_x"+"$offset_y $Origin $tile_name
    done
done
echo Done!
0
Jean

これがもう1つです。1つの画像を4つに分割します。元の画像のサイズに応じて、値を以下のスクリプトに手動で入力する必要があります。 ImageMagickツールの「識別」または「ファイル」ツールを使用して、元の画像の幅と高さを確認します。

'-extract'のコマンドラインオプション を参照して、「ジオメトリ」の指定方法を確認してください。

#!/bin/bash

ORIGINAL=Integration_Tree.png

NEW_WIDTH=2598   # 1/2 of the original width
NEW_HEIGHT=1905  # 1/2 of the original height

NEW_SIZE="${NEW_WIDTH}x${NEW_HEIGHT}"
POS_IMG0="0+0"
POS_IMG1="${NEW_WIDTH}+0"
POS_IMG2="0+${NEW_HEIGHT}"
POS_IMG3="${NEW_WIDTH}+${NEW_HEIGHT}"

for X in 0 1 2 3; do
   VAR="POS_IMG${X}"
   NEW_GEOMETRY="${NEW_SIZE}+${!VAR}" # cunning use of bash variable indirection
   CMD="convert -extract ${NEW_GEOMETRY} \"${ORIGINAL}\" \"out${X}.png\""
   echo $CMD
   convert -extract ${NEW_GEOMETRY} "${ORIGINAL}" "out${X}.png"
   if [[ $? != 0 ]]; then
      echo "Some error occurred" >&2
      exit 1
   fi
done
0
David Tonhofer