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


20

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.


¿Puedes publicar una estructura de imagen de ejemplo? Lo que estoy buscando es si las imágenes están separadas por un espacio en blanco o unidas entre sí ...
James Mertz

Respuestas:


21

ImageMagick . Es una herramienta de línea de comandos pero increíblemente potente y flexible, por lo que vale la pena el esfuerzo de 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.

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


1
¿Cómo se relaciona ImageMagick con Gimp?
Milche Patern

15

Puedes hacerlo así:

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

6

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


6

Puede dividir una imagen en GIMP de forma fila-columna con filas de guía y la herramienta de guillotina (cortador de papel). Del 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, 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 .


gracias esto funciona bien para mis tiras de película. primero hago una cosecha celosa, para que las guías sean más fáciles de colocar
austin

5

Para hacerlo rápido puedes usar:

Ctrl+ Dpara duplicar la imagen
Shift+ Cpara recortar las imágenes
Ctrl+ Spara guardar



2

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.

Obténgalo / modifíquelo en GitHub

Captura de pantalla

Entrada vs salida


1

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.

0

Aquí hay otro: divide una sola imagen en cuatro. Los valores deben ingresarse manualmente en el script a continuación, dependiendo del tamaño de su imagen original. Utilice la herramienta ImageMagick "identificar" o la herramienta "archivo" para verificar el ancho y el alto de la imagen original.

Vea las 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

Script de Vitor 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!
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.