Kann GIMP ein Bild in mehrere Bilder aufteilen?


20

Ich habe in letzter Zeit viele Fotos gescannt, mehr als eins nach dem anderen. Ich habe jetzt mehrere JPEGs, die jeweils mehrere Fotos enthalten.

Kann ich mit GIMP ein JPG in 3 kleinere Dateien "aufteilen"?

Früher habe ich das JPG dreimal kopiert und in jeder Kopie ein anderes Bild zugeschnitten.

Es muss einen einfacheren Weg geben, dies zu tun!

EDIT: Gibt es ein Plugin, das das kann? Ich habe mich umgesehen, aber nur Plugins gefunden, die ein Bild in gleich große Teile "schneiden".


kannst du eine beispielbildstruktur posten? Was ich suche, ist, wenn die Bilder durch Leerzeichen getrennt oder nebeneinander gestoßen sind ...
James Mertz

Antworten:


21

ImageMagick . Es ist ein Kommandozeilen-Tool, aber unglaublich leistungsfähig und flexibel. Es lohnt sich also, es zu erlernen. Beispielsweise:

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

Woher:

  • 1024x1024 ist die Breite und Höhe des gewünschten Ernteguts
  • + 0 + 0 sind x- und y-Offsets im Originalbild

Sie können Dutzende dieser Befehle in eine .cmd-Datei einfügen und mühelos ausführen.

In der ImageMagick-Dokumentation finden Sie Tausende von Optionen für diese Befehle. Ein sehr mächtiges Tool und auch Open Source!


1
In welcher Beziehung steht ImageMagick zu Gimp?
Milche Patern

15

Du kannst es so machen:

  • Rechteck wählen Sie ein Bild
  • Bearbeiten -> Kopieren
  • Bearbeiten -> Einfügen als -> Neues Bild

6

Michaels Einfügen als -> Neues Bild funktioniert, aber ich verwende im Allgemeinen eher Ausschneiden als Kopieren, damit ich keine Inhalte dupliziere.


6

Sie können ein Bild in GIMP zeilenweise mit Hilfszeilen und dem Guillotine-Werkzeug (Papierschneider) teilen. Aus dem GIMP-Benutzerhandbuch :

Zusätzlich zum Bildraster bietet Ihnen GIMP eine flexiblere Art der Positionierungshilfe: Hilfslinien. Hierbei handelt es sich um horizontale oder vertikale Linien, die Sie vorübergehend auf einem Bild anzeigen können, während Sie daran arbeiten.

Um eine Hilfslinie zu erstellen, klicken Sie einfach auf eines der Lineale im Bildfenster und ziehen Sie eine Hilfslinie heraus, während Sie die Maustaste gedrückt halten. Die Hilfslinie wird dann als blaue, gestrichelte Linie angezeigt, die dem Zeiger folgt. Sobald Sie eine Hilfslinie erstellen, wird das Verschieben-Werkzeug aktiviert und der Mauszeiger wechselt zum Verschieben-Symbol.

Der Befehl Guillotine schneidet das aktuelle Bild auf der Grundlage der Bildhilfslinien in Scheiben. Es schneidet das Bild entlang jeder Hilfslinie, ähnlich wie Dokumente in einem Büro mit einer Guillotine (Papierschneider) geschnitten werden, und erstellt aus den Stücken neue Bilder. Sie können auf diesen Befehl aus dem Bildmenü über Bild -> Transformieren -> Guillotine zugreifen .


danke das funktioniert gut für meine filmstreifen. Ich mache eine eifrige Ernte zuerst, um die Führungen zu erleichtern schneller zu legen
austin

5

Um es schnell zu machen, können Sie verwenden:

Ctrl+ Dum das Bild zu duplizieren
Shift+ Cum die Bilder zuzuschneiden
Ctrl+ um sie Szu speichern



2

Ich habe ein einfaches Gimp-Plugin geschrieben, um die aktuelle Auswahl als JPG (feste Qualität) zu speichern.

Dazu müssen Sie jedes Foto manuell auswählen . Ausgabedateinamen werden automatisch generiert.

Hol es dir / ändere es auf GitHub

Bildschirmfoto

Input versus Output


1

Ich habe ein Skript basierend auf der Antwort von Zond erstellt. Die Bilddatei wird entsprechend den Benutzereingabeparametern gekachelt. Das Skript sieht wie folgt aus:

# 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!

Das Skript funktioniert mit "sh" und dem "convert" -Tool von ImageMagick. Ich bin mir nicht sicher, ob das Windows-Cmd sh auf native Weise bereitstellt. In diesem Fall kann man sich dieses Thema ansehen , um sh zum Laufen zu bringen. Außerdem muss der ImageMagick im System installiert sein und eine Verknüpfung für das Konvertierungstool in demselben Ordner, in dem das Skript ausgeführt wird.

  • Ich habe nur mit PNG-Bildern getestet. Ich hoffe es hilft.

0

Hier ist eine andere: Teilen Sie ein einzelnes Bild in vier. Die Werte müssen manuell in das unten stehende Skript eingegeben werden, abhängig davon, wie groß Ihr Originalbild ist. Verwenden Sie das ImageMagick-Tool "Identifizieren" oder das Tool "Datei", um die Breite und Höhe des Originalbilds zu überprüfen.

Siehe Befehlszeilenoptionen für '-extract', um zu sehen, wie eine 'Geometrie' angegeben wird.

#!/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

Vitor-Skript für Linux mit sh. Ich musste nur drei Zeilen wechseln.

#!/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!
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.