GIMP bir görüntüyü birden çok görüntüye bölebilir mi?


20

Son zamanlarda bir seferde birden fazla fotoğraf taradım. Artık her biri birden fazla fotoğraf içeren birden fazla jpegim var.

GIMP kullanarak bir jpg dosyasını 3 küçük dosyaya bölebilir miyim?

Daha önce yaptığım şey: jpg'yi 3 kez kopyalamak ve her kopyada farklı bir resim kırpmak.

Bunu yapmanın daha kolay bir yolu olmalı!

EDIT: Bunu yapabilecek bir eklenti var mı? Etrafa baktım, ancak sadece bir görüntüyü eşit boyutta parçalara ayıran eklentiler buldum.


örnek bir resim yapısı gönderebilir misiniz? Aradığım şey, resimler boş boşlukla ayrılırsa veya birbirine nxt eklenirse ...
James Mertz

Yanıtlar:


21

ImageMagick . Bir komut satırı aracıdır, ancak inanılmaz derecede güçlü ve esnektir, bu yüzden öğrenmek için çaba sarf etmeye değer. Örneğin:

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

Nerede:

  • 1024x1024 , gerekli mahsulün genişliği ve yüksekliğidir
  • + 0 + 0 orijinal görüntüde x ve y ofsetleridir

Bu komutlardan düzinelerce bir .cmd dosyasına yapışabilir ve bunları zahmetsizce çalıştırabilirsiniz.

Bu komutlar için binlerce seçenek olduğunu görmek için ImageMagick belgelerine bakın. Çok güçlü bir araç ve açık kaynak!


1
ImageMagick Gimp ile nasıl ilişkilidir?
Milche Patern

15

Bunu şöyle yapabilirsiniz:

  • Dikdörtgen bir resim seçin
  • Düzenle -> Kopyala
  • Düzenle -> Farklı yapıştır -> Yeni Resim

6

Michael'ın Yapıştır şekli -> Yeni Görüntü çalışır, ancak içeriği kopyalamamak için genellikle Kopyalama yerine Kes'i kullanıyorum.


6

GIMP'deki bir görüntüyü kılavuz satırları ve giyotin (kağıt kesici) aracıyla satır sütun şeklinde bölebilirsiniz. Gönderen GIMP Kullanıcı El Kitabı :

Görüntü ızgarasına ek olarak, GIMP size daha esnek bir konumlandırma yardımcısı türü de sunar: kılavuzlar. Bunlar, görüntü üzerinde çalışırken geçici olarak görüntüleyebileceğiniz yatay veya dikey çizgilerdir.

Kılavuz oluşturmak için, görüntü penceresindeki cetvellerden birine tıklayın ve fare düğmesini basılı tutarken bir kılavuz çekin. Ardından kılavuz, işaretçiyi izleyen mavi, kesikli bir çizgi olarak görüntülenir. Kılavuz oluşturduğunuz anda “Taşı” aracı etkinleştirilir ve fare işaretçisi Taşı simgesine dönüşür.

Giyotin komutu, görüntünün kılavuzlarına göre geçerli görüntüyü dilimler. Giyotin (kağıt kesici) ile bir ofiste belgeleri dilimlemeye benzer şekilde, her kılavuz boyunca görüntüyü keser ve parçalardan yeni görüntüler oluşturur. Bu komuta görüntü menü çubuğundan Görüntü -> Dönüştür -> Giyotin ile erişebilirsiniz .


teşekkürler bu benim film şeritleri için iyi çalışıyor. Ben kılavuzları koymak daha hızlı yapmak için önce gayretli bir mahsul yapmak
austin

5

Hızlı bir şekilde yapmak için şunları kullanabilirsiniz:

Ctrl+ DGörüntüyü çoğaltmak için
Shift+ Cgörüntüleri kırpmak için
Ctrl+ Skaydetmek için



2

Mevcut seçimi JPG (sabit kalite) olarak kaydetmek için basit bir Gimp eklentisi yazdım.

Bu, her fotoğrafı manuel olarak seçmenizi gerektirir . Çıktı dosya adları otomatik olarak oluşturulur.

GitHub'da al / değiştir

Ekran görüntüsü

Giriş ve çıkış karşılaştırması


1

Zond'un cevabına dayanan bir senaryo hazırladım. Görüntü dosyanızı kullanıcı giriş parametrelerine göre döşer. Komut dosyası aşağıdaki gibidir:

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

Komut dosyası, "sh" ve ImageMagick'ten "convert" aracıyla çalışır. Windows cmd'nin yerel bir şekilde sh sağlayıp sağlamadığından emin değilim, bu durumda sh'nin çalışması için bu konuya bir göz atabilirsiniz . Ayrıca, ImageMagick'in sisteme yüklenmesi ve komut dosyasının çalışacağı klasördeki dönüştürme aracı için bir kısayol olması gerekir.

  • Sadece png resimleri ile test ettim. Umarım yardımcı olur.

0

Başka bir örnek: Tek bir görüntüyü dörde bölün. Değerler, orijinal görüntünüzün büyüklüğüne bağlı olarak aşağıdaki komut dosyasına manuel olarak konulmalıdır. Orijinal görüntünün genişliğini ve yüksekliğini kontrol etmek için ImageMagick aracını "tanımlama" veya "dosya" aracını kullanın.

Bkz '-ayıklayın' için komut satırı seçeneklerini bir 'geometri' belirtilmişse nasıl olduğunu görmek için.

#!/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 sh için linux için script. Sadece üç çizgiyi değiştirmek zorunda kaldım.

#!/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!
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.