GIMP può dividere un'immagine in più immagini?


20

Di recente ho scannerizzato molte foto, più di una alla volta. Ora ho più jpeg, ognuno contenente più foto.

Posso, usando GIMP, "dividere" un jpg in 3 file più piccoli?

Quello che ero solito fare è: copiare il jpg 3 volte e ritagliare un'immagine diversa in ogni copia.

Ci deve essere un modo più semplice per farlo!

EDIT: c'è un plugin che può farlo? Mi sono guardato intorno, ma ho trovato solo plugin che "tagliavano" un'immagine in pezzi di uguali dimensioni.


puoi pubblicare una struttura di esempio? Quello che sto cercando è se le immagini sono separate da uno spazio vuoto o intrappolate l'una nell'altra ...
James Mertz,

Risposte:


21

ImageMagick . È uno strumento da riga di comando ma incredibilmente potente e flessibile, quindi vale la pena di impararlo. Per esempio:

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

Dove:

  • 1024x1024 è la larghezza e l'altezza del raccolto richiesto
  • + 0 + 0 sono gli offset xey nell'immagine originale

È possibile inserire dozzine di questi comandi in un file .cmd ed eseguirli senza sforzo.

Guarda la documentazione di ImageMagick per vedere ci sono migliaia di opzioni per questi comandi. Uno strumento molto potente e anche open source!


1
In che modo ImageMagick è correlato a Gimp?
Milche Patern

15

Puoi farlo in questo modo:

  • Rettangolo selezionare un'immagine
  • Modifica -> Copia
  • Modifica -> Incolla come -> Nuova immagine

6

Michael's Paste as -> New Image funziona, ma generalmente utilizzo Cut piuttosto che Copy in modo da non duplicare il contenuto.


6

È possibile dividere un'immagine in GIMP in modo riga-colonna con le righe guida e lo strumento ghigliottina (taglierina). Dal manuale utente di GIMP :

Oltre alla griglia delle immagini, GIMP offre anche un tipo più flessibile di aiuto al posizionamento: le guide. Si tratta di linee orizzontali o verticali che è possibile visualizzare temporaneamente su un'immagine mentre ci si sta lavorando.

Per creare una guida, è sufficiente fare clic su uno dei righelli nella finestra dell'immagine ed estrarre una guida, tenendo premuto il pulsante del mouse. La guida viene quindi visualizzata come una linea tratteggiata blu, che segue il puntatore. Non appena crei una guida, lo strumento "Sposta" viene attivato e il puntatore del mouse diventa l'icona Sposta.

Il comando Ghigliottina suddivide l'immagine corrente, in base alle guide dell'immagine. Taglia l'immagine lungo ciascuna guida, simile a tagliare i documenti in un ufficio con una ghigliottina (tagliacarte) e crea nuove immagini dai pezzi. È possibile accedere a questo comando dalla barra del menu immagine tramite Immagine -> Trasforma -> Ghigliottina .


grazie funziona bene per le mie strisce di pellicola. Faccio prima un raccolto zelante, per rendere le guide più facili da posare più velocemente
austin il

5

Per farlo rapidamente puoi usare:

Ctrl+ Dper duplicare l'immagine
Shift+ Cper ritagliare le immagini
Ctrl+ Sper salvare



2

Ho scritto un semplice plugin Gimp per salvare la selezione corrente come JPG (qualità fissa).

Ciò richiede di selezionare manualmente ogni fotografia. I nomi dei file di output vengono generati automaticamente.

Scarica / modifica su GitHub

Immagine dello schermo

Input vs output


1

Ho realizzato una sceneggiatura basata sulla risposta di Zond. Affiancherà il file di immagine in base ai parametri di input dell'utente. Lo script è il seguente:

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

Lo script funziona con "sh" e lo strumento "converti" di ImageMagick. Non sono sicuro che il cmd di Windows fornisca sh in modo nativo, in questo caso si può dare un'occhiata a questo argomento per far funzionare sh. Inoltre, ImageMagick deve essere installato nel sistema e un collegamento per lo strumento di conversione nella stessa cartella in cui verrà eseguito lo script.

  • Ho provato solo con immagini png. Spero che sia d'aiuto.

0

Eccone un'altra: dividere una singola immagine in quattro. I valori devono essere inseriti manualmente nello script seguente, a seconda della dimensione dell'immagine originale. Utilizzare lo strumento "identifica" di ImageMagick o lo strumento "file" per verificare la larghezza e l'altezza dell'immagine originale.

Vedi le opzioni della riga di comando per '-extract' per vedere come viene specificata una 'geometria'.

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

Script Vitor per Linux con sh. Ho dovuto cambiare solo tre righe.

#!/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!
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.