GIMP可以将图像分割成多个图像吗?


20

我最近一直在扫描很多照片,一次不止一张。我现在有多个jpeg,每个jpegs包含多张照片。

我可以使用GIMP将jpg分成3个较小的文件吗?

我以前做的是:复制jpg 3次,并在每个副本中裁剪不同的图片。

必须有一个更简单的方法来做到这一点!

编辑:有插件可以做到吗?我环顾四周,但只找到了将图像“剪切”成相同大小的插件的插件。


你能发布一个示例图片结构吗?我正在寻找的是如果图片被空白区域隔开或彼此对接nxt ...
James Mertz 2010年

Answers:


21

ImageMagick。它是一个命令行工具,但功能强大且灵活,因此值得学习它。例如:

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

哪里:

  • 1024x1024是所需裁剪的宽度和高度
  • + 0 + 0是原始图像中的x和y偏移

您可以将许多这些命令粘贴到.cmd文件中,并毫不费力地运行它们。

查看ImageMagick文档,了解这些命令有数千种选项。一个非常强大的工具和开源!


ImageMagick与Gimp有什么关系?
Milche Patern


6

迈克尔的粘贴为 - >新图像工作,但我通常使用剪切而不是复制,所以我不重复内容。


6

您可以使用引导行和断头台(切纸机)工具以行列方式在GIMP中划分图像。来自GIMP用户手册

除了图像网格,GIMP还为您提供了更灵活的定位辅助类型:指南。这些是水平或垂直线,您可以在工作时临时显示在图像上。

要创建指南,只需单击图像窗口中的一个标尺并拉出指南,同时按住鼠标按钮。然后,指南显示为蓝色虚线,跟随指针。创建指南后,“移动”工具将立即激活,鼠标指针将变为“移动”图标。

断头台命令根据图像的指南切割当前图像。它沿着每个指南切割图像,类似于使用断头台(切纸机)在办公室中切割文档,并从碎片中创建新图像。您可以通过Image - > Transform - > Guillotine从图像菜单栏访问此命令。


谢谢这适用于我的电影胶片。我首先做了一个狂热的作物,让指南更容易更快地放置
奥斯汀

5

为了快速完成,您可以使用:

Ctrl+ D复制Image
Shift+ C裁剪图像
Ctrl+ S保存



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,在这种情况下,可以看一下这个主题来实现。此外,必须在系统中安装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

用于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!

0

我写了一个简单的Gimp插件,将当前选择保存为JPG(固定质量)。

这需要您手动选择每张照片。输出文件名是自动生成的。

GitHub上获取/修改

截图

输入与输出

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.