O GIMP pode dividir uma imagem em várias imagens?

20

Estive digitalizando muitas fotos recentemente, mais de uma por vez. Agora tenho vários JPEGs, cada um contendo várias fotos.

Usando o GIMP, posso "dividir" um jpg em três arquivos menores?

O que eu costumava fazer é: copiar o jpg 3 vezes e cortar uma imagem diferente em cada cópia.

Deve haver uma maneira mais fácil de fazer isso!

EDIT: Existe um plugin que pode fazer isso? Eu olhei em volta, mas só encontrei plugins que "cortam" uma imagem em pedaços do mesmo tamanho.

Manu
fonte
você pode postar um exemplo de estrutura de imagem? O que eu estou procurando é se as imagens forem separadas por espaço em branco ou unidas nxt umas às outras ...
James Mertz

Respostas:

21

ImageMagick . É uma ferramenta de linha de comando, mas incrivelmente poderosa e flexível, portanto vale o esforço para aprendê-la. Por exemplo:

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

Onde:

  • 1024x1024 é a largura e a altura da colheita necessária
  • + 0 + 0 são deslocamentos xey na imagem original

Você pode colar dezenas desses comandos em um arquivo .cmd e executá-los sem esforço.

Veja a documentação do ImageMagick para ver que existem milhares de opções para esses comandos. Uma ferramenta muito poderosa e de código aberto também!

Zond
fonte
11
Como o ImageMagick está relacionado ao Gimp?
Milche Patern
15

Você pode fazer assim:

  • Retângulo selecione uma imagem
  • Editar -> Copiar
  • Editar -> Colar como -> Nova imagem
Michael Borgwardt
fonte
6

Colar de Michael como -> Nova imagem funciona, mas geralmente uso Recortar em vez de Copiar para não duplicar o conteúdo.

Bob Weber
fonte
6

Você pode dividir uma imagem no GIMP em uma linha de coluna com linhas de guia e a ferramenta guilhotina (cortador de papel). No manual do usuário do GIMP :

Além da grade de imagens, o GIMP também oferece um tipo mais flexível de auxílio ao posicionamento: guias. Estas são linhas horizontais ou verticais que você pode exibir temporariamente em uma imagem enquanto estiver trabalhando nela.

Para criar um guia, basta clicar em uma das réguas na janela de imagem e puxar uma guia, mantendo o botão do mouse pressionado. O guia é exibido como uma linha tracejada azul, que segue o ponteiro. Assim que você cria um guia, a ferramenta "Mover" é ativada e o ponteiro do mouse muda para o ícone Mover.

O comando Guilhotina divide a imagem atual com base nos guias da imagem. Ele corta a imagem ao longo de cada guia, semelhante a fatiar documentos em um escritório com uma guilhotina (cortador de papel) e cria novas imagens a partir das peças. Você pode acessar este comando na barra de menus da imagem em Imagem -> Transformar -> Guilhotina .

Milche Patern
fonte
obrigado isso funciona bem para minhas tiras de filme. eu faço uma colheita zelosa primeiro, para tornar os guias mais fáceis de colocar
austin
5

Para torná-lo rápido, você pode usar:

Ctrl+ Dpara duplicar a imagem
Shift+ Cpara cortar as imagens
Ctrl+ Spara salvar

nekrum
fonte
2

Eu escrevi um plugin Gimp simples para salvar a seleção atual como JPG (qualidade fixa).

Isso requer que você selecione manualmente cada fotografia. Os nomes dos arquivos de saída são gerados automaticamente.

Obtenha / modifique no GitHub

Captura de tela

Entrada vs saída

Andy Joiner
fonte
1

Eu criei um script com base na resposta de Zond. Ele exibirá seu arquivo de imagem de acordo com os parâmetros de entrada do usuário. O script é o seguinte:

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

O script funciona com "sh" e a ferramenta "convert" do ImageMagick. Não tenho certeza se o cmd do Windows fornece sh de maneira nativa; nesse caso, pode-se dar uma olhada neste tópico para fazê-lo funcionar. Além disso, o ImageMagick deve estar instalado no sistema e um atalho para a ferramenta de conversão na mesma pasta na qual o script será executado.

  • Testei apenas com imagens png. Espero que ajude.
Vitor
fonte
0

Aqui está outra: Divida uma única imagem em quatro. Os valores devem ser inseridos manualmente no script abaixo, dependendo do tamanho da imagem original. Use a ferramenta ImageMagick "identificar" ou a ferramenta "arquivo" para verificar a largura e a altura da imagem original.

Consulte as opções da linha de comandos para '-extract' para ver como uma 'geometria' é especificada.

#!/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
David Tonhofer
fonte
0

Script Vitor para linux com sh. Eu só tive que mudar três linhas.

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