GIMP สามารถแบ่งภาพเป็นหลาย ๆ ภาพได้หรือไม่?


20

เมื่อไม่นานมานี้ฉันได้สแกนรูปภาพจำนวนมากมากกว่าหนึ่งภาพ ตอนนี้ฉันมี jpegs หลายอันแต่ละอันมีภาพถ่ายหลายภาพ

ฉันสามารถใช้ "GIMP" แบ่ง "jpg เป็นไฟล์เล็กลง 3 ไฟล์ได้หรือไม่?

สิ่งที่ฉันเคยทำคือคัดลอก jpg 3 ครั้งและครอบตัดรูปภาพที่แตกต่างในแต่ละสำเนา

ต้องมีวิธีที่ง่ายกว่านี้!

แก้ไข: มีปลั๊กอินที่สามารถทำได้หรือไม่ ฉันได้ดูไปรอบ ๆ แต่พบเฉพาะปลั๊กอินที่ "ตัด" ภาพเป็นชิ้นขนาดเท่ากัน


คุณสามารถโพสต์โครงสร้างรูปภาพตัวอย่างได้หรือไม่ สิ่งที่ฉันกำลังมองหาคือถ้าภาพถูกคั่นด้วยพื้นที่ว่างหรือเพิ่ม nxt ให้ซึ่งกันและกัน ...
James Mertz

คำตอบ:


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's Paste เป็น -> New Image ใช้งานได้ แต่โดยทั่วไปฉันใช้ Cut แทนการคัดลอกดังนั้นฉันจึงไม่ทำซ้ำเนื้อหา


6

คุณสามารถแบ่งภาพใน GIMP ในแบบแถวคอลัมน์ด้วยแถวนำและเครื่องมือกิโยติน (เครื่องตัดกระดาษ) จากคู่มือผู้ใช้ GIMP :

นอกเหนือจากตารางรูปภาพ GIMP ยังให้ความช่วยเหลือในการกำหนดตำแหน่งประเภทที่ยืดหยุ่นยิ่งขึ้น: คู่มือ นี่คือเส้นแนวนอนหรือแนวตั้งที่คุณสามารถแสดงบนรูปภาพชั่วคราวในขณะที่คุณกำลังทำงานอยู่

ในการสร้างคำแนะนำเพียงคลิกที่หนึ่งในผู้ปกครองในหน้าต่างรูปภาพและดึงคำแนะนำออกมาในขณะที่กดปุ่มเมาส์ค้างไว้ คำแนะนำจะปรากฏเป็นเส้นสีน้ำเงินเส้นประซึ่งตามตัวชี้ ทันทีที่คุณสร้างคำแนะนำเครื่องมือ“ ย้าย” จะถูกเปิดใช้งานและตัวชี้เมาส์จะเปลี่ยนเป็นไอคอนย้าย

คำสั่งกิโยตินแบ่งภาพปัจจุบันออกตามคำแนะนำของรูปภาพ มันตัดภาพตามคู่มือแต่ละฉบับคล้ายกับการตัดเอกสารในสำนักงานที่มีกิโยติน (เครื่องตัดกระดาษ) และสร้างภาพใหม่ออกมาจากชิ้นงาน คุณสามารถเข้าถึงคำสั่งนี้จากแถบเมนูภาพผ่านภาพ -> Transform -> กิโยติน


ขอบคุณมันใช้งานได้ดีกับแถบฟิล์มของฉัน ฉันจะทำพืชผลอย่างกระตือรือร้นก่อนเพื่อให้ไกด์นำเที่ยววางได้ง่ายกว่า
ออสติน

5

เพื่อให้รวดเร็วคุณสามารถใช้:

Ctrl+ Dเพื่อทำสำเนารูปภาพ
Shift+ Cเพื่อครอบตัดรูปภาพ
Ctrl+ Sเพื่อบันทึก



2

ฉันเขียนปลั๊กอิน Gimp ง่าย ๆ เพื่อบันทึกการเลือกปัจจุบันเป็น JPG (คุณภาพคงที่)

คุณต้องเลือกภาพถ่ายแต่ละภาพด้วยตนเอง ชื่อไฟล์ที่ส่งออกสร้างขึ้นโดยอัตโนมัติ

รับ / แก้ไขบนGitHub

ภาพหน้าจอ

อินพุต vs เอาต์พุต


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!

สคริปต์ทำงานกับเครื่องมือ "sh" และ "แปลง" จาก ImageMagick ฉันไม่แน่ใจว่า windows cmd ให้ sh ด้วยวิธีเนทีฟในกรณีนี้เราสามารถดูหัวข้อนี้เพื่อให้ทำงานได้ นอกจากนี้ ImageMagick จะต้องติดตั้งในระบบและทางลัดสำหรับเครื่องมือการแปลงในโฟลเดอร์เดียวกันที่สคริปต์จะทำงาน

  • ฉันทดสอบด้วยภาพ png เท่านั้น หวังว่ามันจะช่วย

0

นี่คืออีก: แยกภาพเดียวเป็นสี่ ค่าจะต้องใส่ลงในสคริปต์ด้วยตนเองด้านล่างขึ้นอยู่กับขนาดภาพต้นฉบับของคุณ ใช้เครื่องมือ ImageMagick "ระบุ" หรือเครื่องมือ "ไฟล์" เพื่อตรวจสอบความกว้างและความสูงของภาพต้นฉบับ

ดูตัวเลือกบรรทัดคำสั่งสำหรับ '-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

Vitor script สำหรับ linux with 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!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.