GIMP peut-il diviser une image en plusieurs images?


20

J'ai numérisé beaucoup de photos récemment, plus d'une à la fois. J'ai maintenant plusieurs jpegs, chacun contenant plusieurs photos.

Puis-je, en utilisant GIMP, "diviser" un jpg en 3 fichiers plus petits?

Ce que j'avais l'habitude de faire était de copier le jpg 3 fois et de recadrer une image différente dans chaque copie.

Il doit y avoir un moyen plus simple de le faire!

EDIT: Y a-t-il un plugin qui peut le faire? J'ai regardé autour de moi, mais je n'ai trouvé que des plugins qui "découpent" une image en morceaux de taille égale.


pouvez-vous publier un exemple de structure d'image? Ce que je recherche, c'est si les images sont séparées par des espaces vides ou aboutées les unes aux autres ...
James Mertz

Réponses:


21

ImageMagick . C'est un outil en ligne de commande mais incroyablement puissant et flexible qui en vaut la peine pour l'apprendre. Par exemple:

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

Où:

  • 1024x1024 est la largeur et la hauteur du recadrage requis
  • + 0 + 0 sont des décalages x et y dans l'image d'origine

Vous pouvez coller des dizaines de ces commandes dans un fichier .cmd et les exécuter sans effort.

Regardez la documentation ImageMagick pour voir qu'il existe des milliers d'options pour ces commandes. Un outil très puissant et open source aussi!


1
Comment ImageMagick est-il lié à Gimp?
Milche Patern

15

Vous pouvez le faire comme ceci:

  • Rectangle sélectionner une image
  • Modifier -> Copier
  • Édition -> Coller comme -> Nouvelle image

6

Michael's Paste as -> New Image fonctionne, mais j'utilise généralement Couper plutôt que Copier pour ne pas dupliquer le contenu.


6

Vous pouvez diviser une image dans GIMP de manière ligne-colonne avec des lignes de guidage et l'outil de guillotine (coupe-papier). Depuis le manuel d'utilisation de GIMP :

En plus de la grille d'image, GIMP vous offre également un type d'aide au positionnement plus flexible: les guides. Ce sont des lignes horizontales ou verticales que vous pouvez afficher temporairement sur une image pendant que vous travaillez dessus.

Pour créer un guide, cliquez simplement sur l'une des règles dans la fenêtre d'image et sortez un guide, tout en maintenant le bouton de la souris enfoncé. Le guide s'affiche alors sous la forme d'une ligne bleue en pointillés, qui suit le pointeur. Dès que vous créez un guide, l'outil «Déplacer» est activé et le pointeur de la souris se transforme en icône Déplacer.

La commande Guillotine découpe l'image actuelle en fonction des guides de l'image. Il coupe l'image le long de chaque guide, comme pour trancher des documents dans un bureau avec une guillotine (coupe-papier) et crée de nouvelles images à partir des pièces. Vous pouvez accéder à cette commande depuis la barre de menus de l'image via Image -> Transformer -> Guillotine .


merci cela fonctionne bien pour mes bandes de film. je fais d'abord une récolte zélée pour rendre les guides plus faciles à poser
austin

5

Pour le faire rapidement, vous pouvez utiliser:

Ctrl+ Dpour dupliquer l'image
Shift+ Cpour recadrer les images
Ctrl+ Spour enregistrer



2

J'ai écrit un simple plugin Gimp pour enregistrer la sélection actuelle au format JPG (qualité fixe).

Cela vous oblige à sélectionner manuellement chaque photo. Les noms des fichiers de sortie sont générés automatiquement.

Téléchargez / modifiez sur GitHub

Capture d'écran

Entrée vs sortie


1

J'ai fait un script basé sur la réponse de Zond. Il tuile votre fichier image en fonction des paramètres d'entrée utilisateur. Le script est le suivant:

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

Le script fonctionne avec "sh" et l'outil "convertir" d'ImageMagick. Je ne sais pas si la cmd de windows fournit sh de manière native, dans ce cas, on peut jeter un œil à cette rubrique pour faire fonctionner sh. De plus, ImageMagick doit être installé dans le système et un raccourci pour l'outil de conversion dans le même dossier dans lequel le script s'exécutera.

  • Je n'ai testé qu'avec des images png. J'espère que cela aide.

0

En voici une autre: divisez une seule image en quatre. Les valeurs doivent être saisies manuellement dans le script ci-dessous, selon la taille de votre image d'origine. Utilisez l'outil ImageMagick "identifier" ou l'outil "fichier" pour vérifier la largeur et la hauteur de l'image d'origine.

Voir les options de ligne de commande pour '-extract' pour voir comment une 'géométrie' est spécifiée.

#!/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 pour linux avec sh. Je n'ai eu qu'à changer trois lignes.

#!/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!
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.