김프에서 이미지를 여러 이미지로 분할 할 수 있습니까?


20

최근에 한 번에 여러 장의 사진을 많이 스캔했습니다. 이제 여러 사진을 포함하는 여러 개의 JPEG가 있습니다.

김프를 사용하여 jpg를 3 개의 작은 파일로 "분할"할 수 있습니까?

내가했던 일은 : jpg를 3 번 ​​복사하고 각 사본마다 다른 그림을 자릅니다.

이 작업을 수행하는 더 쉬운 방법이 있어야합니다!

편집 : 그렇게 할 수있는 플러그인이 있습니까? 주변을 둘러 보았지만 이미지를 동일한 크기의 조각으로 "자르는"플러그인 만 발견했습니다.


그림 구조의 예를 게시 할 수 있습니까? 사진이 ... 공백으로 분리되거나 서로 NXT 닿아 경우 내가 찾고 있습니다
제임스 메츠

답변:


21

ImageMagick . 명령 줄 도구이지만 놀랍도록 강력하고 유연하므로 배우는 데 많은 노력을 기울입니다. 예를 들면 다음과 같습니다.

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

어디:

  • 1024x1024 는 필요한 자르기의 너비와 높이입니다
  • + 0 + 0 은 원본 이미지에 대한 x 및 y 오프셋입니다.

수십 개의 이러한 명령을 .cmd 파일에 넣고 쉽게 실행할 수 있습니다.

이 명령에 수천 가지 옵션이 있는지 ImageMagick 설명서를 참조하십시오. 매우 강력한 도구이며 오픈 소스이기도합니다!


1
ImageMagick은 Gimp와 어떤 관련이 있습니까?
Milche Patern

15

다음과 같이 할 수 있습니다 :

  • 사각형 이미지를 선택
  • 편집-> 복사
  • 편집-> 붙여 넣기-> 새 이미지

6

Michael의 붙여 넣기-> 새 이미지로 작동하지만 일반적으로 복사 대신 잘라내기를 사용하므로 내용을 복제하지 않습니다.


6

안내 선과 단두대 (용지 절단기) 도구를 사용하여 김프의 이미지를 행 열 방식으로 나눌 수 있습니다. 에서 김프 사용자 매뉴얼 :

김프는 이미지 그리드 외에도보다 유연한 유형의 위치 결정 보조 도구 인 가이드를 제공합니다. 작업하는 동안 이미지에 일시적으로 표시 할 수있는 가로 또는 세로 선입니다.

안내선을 만들려면 이미지 창에서 눈금자 중 하나를 클릭하고 마우스 버튼을 누른 상태에서 안내선을 당기십시오. 그러면 안내선이 파란색 파선으로 표시되어 포인터를 따릅니다. 안내선을 작성하자마자 "이동"도구가 활성화되고 마우스 포인터가 이동 아이콘으로 바뀝니다.

단두대 명령은 이미지 안내선을 기반으로 현재 이미지를 슬라이스합니다. 단두대 (용지 절단기)가있는 사무실에서 문서를 자르는 것과 유사하게 각 안내선을 따라 이미지를 자르고 조각에서 새 이미지를 만듭니다. 이미지 메뉴 표시 줄에서 이미지 -> 변환 -> 단두대를 통해이 명령에 액세스 할 수 있습니다 .


고마워 이것은 필름 스트립에 잘 작동합니다. 가이드를 더 빨리 배치하기 위해 열성적인 농작물을 먼저합니다
austin

5

빨리 만들기 위해 다음을 사용할 수 있습니다.

Ctrl+ D이미지를 복제하려면
Shift+ 이미지 C를 자르려면
Ctrl+ S저장



2

현재 선택을 JPG (고정 품질)로 저장하기 위해 간단한 Gimp 플러그인을 작성했습니다.

각 사진 을 수동으로 선택 해야합니다 . 출력 파일 이름이 자동 생성됩니다.

GitHub 에서 가져 오기 / 수정

스크린 샷

입력 대 출력


1

Zond의 답변을 기반으로 스크립트를 만들었습니다. 사용자 입력 매개 변수에 따라 이미지 파일을 바둑판 식으로 배열합니다. 스크립트는 다음과 같습니다.

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

이 스크립트는 ImageMagick의 "sh"및 "convert"도구와 함께 작동합니다. Windows cmd가 기본 방식으로 sh를 제공하는지 확실하지 않습니다.이 경우 sh가 작동하도록 이 주제 를 살펴볼 수 있습니다 . 또한 ImageMagick을 시스템에 설치하고 스크립트를 실행할 폴더에 변환 도구의 바로 가기를 설치해야합니다.

  • 나는 png 이미지로만 테스트했습니다. 도움이 되길 바랍니다.

0

여기 또 하나가 있습니다 : 단일 이미지를 4 개로 분할합니다. 원본 이미지의 크기에 따라 아래 스크립트에 값을 수동으로 입력해야합니다. ImageMagick 도구 "identify"또는 "file"도구를 사용하여 원본 이미지의 너비와 높이를 확인하십시오.

참조 '-extract'에 대한 명령 줄 옵션 에 '기하학'이 지정하는 방법을 참조하십시오.

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

sh가있는 Linux 용 Vitor 스크립트 나는 단지 세 줄만 바꾸어야했다.

#!/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!
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.