GIMP có thể chia một hình ảnh thành nhiều hình ảnh không?


20

Tôi đã quét rất nhiều ảnh gần đây, nhiều hơn một lần. Bây giờ tôi có nhiều jpeg, mỗi tệp chứa nhiều ảnh.

Tôi có thể, bằng cách sử dụng GIMP, "tách" một jpg thành 3 tệp nhỏ hơn không?

Những gì tôi thường làm là: sao chép jpg 3 lần và cắt một hình ảnh khác nhau trong mỗi bản sao.

Phải có một cách dễ dàng hơn để làm điều này!

EDIT: Có một plugin có thể làm điều đó? Tôi đã nhìn xung quanh, nhưng chỉ tìm thấy các plugin "cắt" hình ảnh thành các mảnh có kích thước bằng nhau.


bạn có thể gửi một cấu trúc hình ảnh ví dụ? Những gì tôi đang tìm kiếm là nếu các hình ảnh được phân tách bằng khoảng trống hoặc được nxt với nhau ...
James Mertz

Câu trả lời:


21

ImageMagick . Đây là một công cụ dòng lệnh nhưng mạnh mẽ và linh hoạt đáng kinh ngạc, đáng để nỗ lực tìm hiểu nó. Ví dụ:

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

Ở đâu:

  • 1024x1024 là chiều rộng và chiều cao của cây trồng yêu cầu
  • + 0 + 0 là x và y bù vào ảnh gốc

Bạn có thể dán hàng tá các lệnh này vào tệp .cmd và chạy chúng dễ dàng.

Nhìn vào tài liệu ImageMagick để thấy có hàng ngàn tùy chọn cho các lệnh này. Một công cụ rất mạnh và mã nguồn mở quá!


1
ImageMagick liên quan đến Gimp như thế nào?
Milche P Parent

15

Bạn có thể làm như thế này:

  • Hình chữ nhật chọn một hình ảnh
  • Chỉnh sửa -> Sao chép
  • Chỉnh sửa -> Dán dưới dạng -> Hình ảnh mới

6

Michael's Paste as -> New Image hoạt động, nhưng tôi thường sử dụng Cut thay vì Copy để tôi không sao chép nội dung.


6

Bạn có thể chia một hình ảnh trong GIMP theo cách hàng cột với các hàng hướng dẫn và công cụ chém (cắt giấy). Từ Hướng dẫn sử dụng GIMP :

Ngoài lưới hình ảnh, GIMP cũng cung cấp cho bạn một loại hỗ trợ định vị linh hoạt hơn: hướng dẫn. Đây là những đường ngang hoặc dọc bạn có thể tạm thời hiển thị trên một hình ảnh trong khi bạn đang làm việc với nó.

Để tạo một hướng dẫn, chỉ cần nhấp vào một trong những thước kẻ trong cửa sổ hình ảnh và kéo ra một hướng dẫn, trong khi giữ nút chuột nhấn. Hướng dẫn sau đó được hiển thị dưới dạng một đường đứt nét màu xanh lam, đi theo con trỏ. Ngay khi bạn tạo một hướng dẫn, công cụ Di chuyển trực tiếp được kích hoạt và con trỏ chuột thay đổi thành biểu tượng Di chuyển.

Lệnh Guillotine cắt lát hình ảnh hiện tại, dựa trên các hướng dẫn của hình ảnh. Nó cắt hình ảnh dọc theo mỗi hướng dẫn, tương tự như cắt tài liệu trong văn phòng bằng máy chém (máy cắt giấy) và tạo ra hình ảnh mới từ các mảnh. Bạn có thể truy cập lệnh này từ thanh hình ảnh thông qua Image -> Transform -> Guillotine .


cảm ơn điều này hoạt động tốt cho dải phim của tôi. Tôi làm một vụ mùa nhiệt tình trước, để làm cho hướng dẫn viên dễ dàng đẻ nhanh hơn
austin

5

Để làm cho nó nhanh chóng, bạn có thể sử dụng:

Ctrl+ Dđể nhân đôi Image
Shift+ Cđể cắt ảnh
Ctrl+ Sđể lưu



2

Tôi đã viết một plugin Gimp đơn giản để lưu lựa chọn hiện tại dưới dạng JPG (chất lượng cố định).

Điều này đòi hỏi bạn phải tự chọn từng bức ảnh. Tên tệp đầu ra được tạo tự động.

Nhận nó / sửa đổi trên GitHub

Ảnh chụp màn hình

Đầu vào so với đầu ra


1

Tôi đã thực hiện một kịch bản dựa trên câu trả lời từ Zond. Nó sẽ xếp tập tin hình ảnh của bạn theo các thông số đầu vào của người dùng. Kịch bản như sau:

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

Kịch bản hoạt động với "sh" và công cụ "convert" từ ImageMagick. Tôi không chắc chắn nếu các cửa sổ cmd cung cấp sh theo cách nguyên bản, trong trường hợp này, người ta có thể xem chủ đề này để làm cho sh hoạt động. Hơn nữa, ImageMagick phải được cài đặt trong hệ thống và một lối tắt cho công cụ chuyển đổi trong cùng thư mục mà tập lệnh sẽ chạy.

  • Tôi đã thử nghiệm chỉ với hình ảnh png. Hy vọng nó giúp.

0

Đây là một hình ảnh khác: Chia một hình ảnh duy nhất thành bốn. Các giá trị phải được đặt thủ công vào tập lệnh bên dưới, tùy thuộc vào độ lớn của ảnh gốc của bạn. Sử dụng công cụ "nhận dạng" của công cụ ImageMagick để kiểm tra chiều rộng và chiều cao của ảnh gốc.

Xem các tùy chọn dòng lệnh cho '-extract' để xem cách 'hình học' được chỉ định.

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

Kịch bản Vitor cho linux với sh. Tôi chỉ phải thay đổi ba dòng.

#!/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!
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.