Чи може GIMP розділити зображення на кілька зображень?


20

Нещодавно я сканував багато фотографій, по одній. Зараз у мене є кілька jpegs, кожен з яких містить кілька фотографій.

Чи можу я за допомогою GIMP "розділити" jpg на 3 менші файли?

Що я раніше робив: скопіюйте jpg 3 рази та обріжте різну картинку в кожній копії.

Має бути простіший спосіб зробити це!

EDIT: Чи є плагін, який може це зробити? Я оглянувся, але знайшов лише плагіни, які "розрізали" зображення на шматки однакового розміру.


чи можете ви розмістити приклад структури зображення? Що я шукаю, це якщо фотографії розділені порожнім пробілом або підклеєні nxt один до одного ...
Джеймс Мерц,

Відповіді:


21

ImageMagick . Це інструмент командного рядка, але дивно потужний і гнучкий, тому варто вивчити його. Наприклад:

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

Де:

  • 1024x1024 - ширина та висота необхідного врожаю
  • + 0 + 0 - це х і у зміщення вихідного зображення

Ви можете вставити десятки цих команд у файл .cmd і без особливих зусиль запускати їх.

Перегляньте документацію ImageMagick, щоб побачити, чи є тисячі варіантів цих команд. Дуже потужний інструмент і з відкритим кодом!


1
Як ImageMagick пов'язаний з Gimp?
Мільче Патерн

15

Ви можете це зробити так:

  • Прямокутник виберіть зображення
  • Редагувати -> Копіювати
  • Редагувати -> Вставити як -> Нове зображення

6

Вставити Майкл як -> Нове зображення працює, але я зазвичай використовую Вирізати, а не Копіювати, щоб не дублювати вміст.


6

Ви можете розділити зображення в GIMP у вигляді рядків-стовпців за допомогою напрямних рядків та інструменту гілотин (виріз для паперу). З посібника користувача GIMP :

Окрім сітки зображень, GIMP також надає гнучкіший тип допомоги щодо позиціонування: напрямні. Це горизонтальні або вертикальні лінії, які ви можете тимчасово відображати на зображенні під час роботи над ним.

Щоб створити путівник, просто натисніть на один з лінійок у вікні зображення та витягніть напрямну, утримуючи натиснутою кнопку миші. Потім напрямний відображається у вигляді синьої пунктирної лінії, яка слідує за вказівником. Як тільки ви створюєте путівник, активується інструмент «Переміщення» і вказівник миші змінюється на значок «Переміщення».

Команда Гільйотина розрізає поточне зображення, спираючись на посібники зображення. Він вирізає зображення уздовж кожного напрямного, подібно до нарізання документів в офісі гільйотиною (різаком для паперу) та створює нові зображення з фрагментів. Ви можете отримати доступ до цієї команди з меню меню через зображення -> перетворити -> гільйотина .


дякую, це добре працює для моїх кінострічок. Я роблю ревний урожай спочатку, щоб полегшити прокладку швидше
Austin

5

Щоб швидко зробити це, ви можете скористатися:

Ctrl+ Dдля дублювання зображення
Shift+ Cдля обрізання зображень
Ctrl+ Sдля збереження



2

Я написав простий плагін Gimp, щоб зберегти поточний вибір як JPG (фіксована якість).

Для цього потрібно вибрати вручну кожну фотографію. Імена вихідних файлів створюються автоматично.

Отримати / змінити на GitHub

Знімок екрана

Введення та вихід


1

Я створив сценарій на основі відповіді Зонда. Це додасть файл до зображення відповідно до параметрів введення користувача. Сценарій такий:

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

Сценарій працює з "sh" та інструментом "конвертувати" з ImageMagick. Я не впевнений, чи Windows cmd надає sh по-новому, і в цьому випадку можна поглянути на цю тему, щоб працювати. Крім того, ImageMagick повинен бути встановлений в системі та ярлик для інструменту перетворення в тій же папці, в якій буде виконуватися сценарій.

  • Я тестував лише зображення PNG. Сподіваюся, це допомагає.

0

Ось ще один: розділіть одне зображення на чотири. Значення потрібно вводити вручну в сценарій нижче, залежно від того, наскільки велике ваше початкове зображення. Використовуйте інструмент ImageMagick "ідентифікувати" або інструмент "файл", щоб перевірити ширину та висоту вихідного зображення.

Дивіться параметри командного рядка для "-екстракту", щоб побачити, як вказано "геометрію".

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

Сценарій Vitor для linux з sh. Мені довелося лише змінити три лінії.

#!/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!
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.