it-swarm-es.tech

¿Puede GIMP dividir una imagen en varias imágenes?

He estado escaneando muchas fotos recientemente, más de una a la vez. Ahora tengo múltiples archivos JPEG, cada uno con múltiples fotos.

¿Puedo, usando GIMP, "dividir" un jpg en 3 archivos más pequeños?

Lo que solía hacer es: copiar el jpg 3 veces y recortar una imagen diferente en cada copia.

¡Debe haber una manera más fácil de hacer esto!

EDITAR: ¿Hay un complemento que pueda hacer eso? Miré a mi alrededor, pero solo encontré complementos que "cortan" una imagen en partes del mismo tamaño.

20
Manu

ImageMagick . Es una herramienta de línea de comandos, pero increíblemente potente y flexible, por lo que vale la pena el esfuerzo para aprenderla. Por ejemplo:

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

Dónde:

  • 1024x1024 es el ancho y la altura del cultivo requerido
  • + 0 + 0 son desplazamientos xey en la imagen original

Puede pegar docenas de estos comandos en un archivo .cmd y ejecutarlos sin esfuerzo.

Consulte la documentación de ImageMagick para ver que hay miles de opciones para estos comandos. ¡Una herramienta muy poderosa y de código abierto también!

22
Zond

Puedes hacerlo así:

  • Rectángulo seleccionar una imagen
  • Editar -> Copiar
  • Editar -> Pegar como -> Nueva imagen
15

Michael's Paste as -> New Image funciona, pero generalmente uso Cut en lugar de Copy para no duplicar contenido.

6
Bob Weber

Puede dividir una imagen en GIMP de forma fila-columna con filas de guía y la herramienta de guillotina (cortador de papel). De Manual de usuario de GIMP :

Además de la cuadrícula de imágenes, GIMP también le ofrece un tipo de ayuda de posicionamiento más flexible: guías. Estas son líneas horizontales o verticales que puede mostrar temporalmente en una imagen mientras trabaja en ella.

Para crear una guía, simplemente haga clic en una de las reglas en la ventana de la imagen y extraiga una guía, mientras mantiene presionado el botón del mouse. La guía se muestra como una línea azul discontinua, que sigue al puntero. Tan pronto como cree una guía, la herramienta "Mover" se activa y el puntero del mouse cambia al icono Mover.

El comando Guillotina corta la imagen actual, según las guías de la imagen. Corta la imagen a lo largo de cada guía, de manera similar a cortar documentos en una oficina con una guillotina (cortador de papel) y crea nuevas imágenes a partir de las piezas. Puede acceder a este comando desde el menú de la imagen a través de Imagen -> Transformar -> Guillotina .

6
Milche Patern

He estado usando el complemento Divide Scanned Images que funciona bien.

ACTUALIZACIÓN: https://github.com/FrancoisMalan/DivideScannedImages

5
Raymond

Para hacerlo rápido puedes usar:

CtrlD duplicar la imagen
ShiftC recortar las imágenes
CtrlS ahorrar

5
nekrum

Escribí un complemento simple de Gimp para guardar la selección actual como JPG (calidad fija).

Esto requiere que seleccione manualmente cada fotografía. Los nombres de los archivos de salida se generan automáticamente.

Obtener/modificar en GitHub

Screenshot

Input vs output

2
Andy Joiner

He hecho un guión basado en la respuesta de Zond. Enlosará su archivo de imagen de acuerdo con los parámetros de entrada del usuario. El guión es el siguiente:

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

El script funciona con "sh" y la herramienta "convertir" de ImageMagick. No estoy seguro de si el cmd de Windows proporciona sh de forma nativa, en este caso uno puede echar un vistazo a este tema para que sh funcione. Además, ImageMagick debe estar instalado en el sistema y un acceso directo para la herramienta de conversión en la misma carpeta en la que se ejecutará el script.

  • He probado solo con imágenes png. Espero eso ayude.
1
Vitor

Vitor script para linux con sh. Solo tuve que cambiar tres líneas.

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

Aquí hay otro: divide una sola imagen en cuatro. Los valores deben ingresarse manualmente en el script a continuación, dependiendo de qué tan grande sea su imagen original. Use la herramienta ImageMagick "Identificar" o la herramienta "Archivo" para verificar el ancho y alto de la imagen original.

Vea opciones de línea de comando para '-extract' para ver cómo se especifica una 'geometría'.

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