Pertanyaan Memotong Gambar menggunakan Alat Baris Perintah Saja


Saya ingin memotong gambar di CLI saya hanya menggunakan Ubuntu alat baris perintah saja menunjukkan piksel untuk dipangkas untuk empat arah. (Sama seperti yang ditemukan di libreoffice)

Sebagai contoh:

crop image.jpg -top 5px -bottom 7px -right 14px -left 3px

Apakah ada alat seperti itu (bukan GUI)?


11
2018-06-03 08:31


asal


kemungkinan duplikat dari Apakah ada alat yang ringan untuk memotong gambar dengan cepat? - Thomas Weller
@ThomasWeller ini meminta baris perintah dan bukan alat GUI ditambah pertanyaan terkait yang Anda berikan tentang GUI, jadi silakan baca pertanyaannya lagi - Maythux
Pertanyaan terkait tidak menentukan jenis alat. Jawaban kedua adalah tentang alat baris perintah: imagemagick. Saya tahu ada diskusi tentang SO apakah sebuah pertanyaan adalah duplikat jika jawabannya sama. Orang mungkin setuju atau tidak setuju. - Thomas Weller
@ThomasWeller tapi jawabannya tidak nyaman, apalagi itu tidak menunjukkan bagaimana dan mengapa dia menggunakan opsi .. Terus terang kamu mengerti opsi yang digunakan ?! Saya sendiri tidak bisa mendapatkan informasi itu, itu hanya jawaban pertama di sini, itu tanpa penjelasan yang membuat jawabannya berkualitas rendah - Maythux
@downvoters Haruskah saya tahu apa yang terjadi dengan Anda? !! - Maythux


Jawaban:


Berikut ini solusi yang digunakan convert dari paket gambar magick.

sudo apt-get install imagemagick

Untuk sebuah gambar image.jpg

$ identify image.jpg 

image.jpg JPEG 720x482 720x482+0+0 8-bit DirectClass 100KB 0.000u 0:00.009

Seperti yang ditunjukkan di atas, gambar input adalah 720x482px.

Sekarang untuk melakukan cropping Anda harus menentukan dua faktor:

  1. titik awal pemangkasan (termasuk 2 arah)
  2. Ukuran persegi panjang dipotong (Di sini Anda dapat menyertakan arah lain)

Sekarang kembali ke gambar image.jpg di atas, saya ingin crop top 5px -bottom 7px -right 14px -left 3px maka Anda bisa melakukannya:

convert image.jpg -crop 713x470+5+3 output.jpg

Sekarang

$ identify output.jpg 

output.jpg JPEG 713x470 713x470+0+0 8-bit DirectClass 102KB 0.000u 0:00.000

22
2018-06-03 08:48



Saya harap ini akan membantu - Maythux
Dikatakan bahwa Imagemagick 7 menggunakan perintah "magick" sebagai pengganti "konversi". Jika ada yang bertemu command not found: convert masalah, coba magick - iplus26
Ini adalah bantuan besar, tetapi butuh beberapa waktu untuk membungkus kepala saya di sekitar "perhitungan". Saya memiliki satu set gambar 1280x1024 yang saya butuhkan untuk memotong bagian atas dan bawah, jadi gambar akhir akan memiliki "tengah" 718 piksel dari aslinya (melepas bagian atas dan bawah pita hitam). Saya perlu menggunakan ini: convert in.png -crop 1280x718+0+152 out.pngdi mana saya mengerti maksudnya: convert in.png -crop [final-right-x]x[final-right-y]+[crop-left]+[crop-top] out.png, meskipun itu sepertinya tidak cocok dengan nomor @ Maythux ... FWIW! - Dɑvïd
Seharusnya tidak 703x470 dari pada 713x470? Sebagai pemangkasan kiri + kanan = 3+14 = 17px, yang dikurangkan dari 720 aku s 703, dan tidak 713. - Mooncrater


Untuk membuat opsi "user friendly", skrip di bawah ini dapat digunakan. Cukup jalankan perintah:

<script> <image> <crop_left> <crop_right> <crop_top> <crop_bottom>

Ini menciptakan gambar terpangkas image.jpeg, bernama image[cropped].jpeg di direktori yang sama.

Naskah

#!/usr/bin/env python3
import subprocess
import sys

# image, crop- dimensions
img = sys.argv[1]; left = sys.argv[2]; right = sys.argv[3]; top = sys.argv[4]; bottom = sys.argv[5]
# arrange the output file's name and path
img_base = img[:img.rfind(".")]; extension = img[img.rfind("."):]; path = img[:img.rfind("/")]
img_out = img_base+"[cropped]"+extension
# get the current img' size
data = subprocess.check_output(["identify", img]).decode("utf-8").strip().replace(img, "")
size = [int(n) for n in data.replace(img, "").split()[1].split("x")]
# calculate the command to resize
w = str(size[0]-int(left)-int(right)); h = str(size[1]-int(top)-int(bottom)); x = left; y = top
# execute the command
cmd = ["convert", img, "-crop", w+"x"+h+"+"+x+"+"+y, "+repage", img_out]
subprocess.Popen(cmd)

Bagaimana cara menggunakan

  1. Skrip ini menggunakan imagemagick

    sudo apt-get install imagemagick
    
  2. Simpan skrip di atas sebagai crop_image (tidak ada ekstensi) di ~/bin.

  3. Buat direktori jika perlu. Dalam hal ini, jalankan juga source ~/.profile untuk membuat direktori muncul $PATH.
  4. Buat skrip dapat dieksekusi.

Sekarang jalankan skrip dengan namanya, seperti yang disebutkan, misalnya:

crop_image /path/to/image.jpg 20 30 40 50

Spasi tidak masalah, selama dalam kasus itu, Anda menggunakan tanda kutip:

crop_image '/path/with spaces in the name/to/image.jpg' 20 30 40 50

6
2018-06-03 21:23



@Maythux Tidak yakin apa arti edit terbaru Anda, maksud Anda, solusi di atas tidak berfungsi di sistem Anda? Ini hanya cli. - Jacob Vlijm
Maaf saya sudah keluar tiga hari yang lalu, jadi saya tidak tahu mengapa Anda mendapatkan downvote, bukan di sini +1 saya karena Anda pantas mendapatkannya. - Maythux
Tapi saya rasa ini bekerja ini akan sangat sulit untuk seorang pemula sedikit daripada menggunakan alat panen asli, tapi untuk saya, saya suka cara Anda, keren, maaf lagi untuk penundaan - Maythux
Wow terima kasih. Downvote yang saya dapatkan karena ini: meta.askubuntu.com/questions/14082/… - Jacob Vlijm
Saya tidak tahu mengapa jawaban / pertanyaan yang bagus kalah suara kecuali penggunaan reputasi yang buruk, pertanyaan ini menjadi -3 !!! hhhh saya tidak mengerti mengapa - Maythux


Jika Anda ingin memangkas daerah putih, imagemagick memiliki perintah khusus untuk itu:

convert -trim input.jpg output.jpg

3
2018-03-09 09:57





Anda dapat menggunakan perintah konversi dalam image magick Pak.
Untuk memasang sudo apt-get install imagemagick atau sudo yum install ImageMagick.
Kemudian gunakan -crop geometry untuk memotong gambar. Untuk membaca lebih banyak baca sini


2
2018-06-03 08:40



Tanaman ini berdasarkan rasio dan bukan dengan margin yang berbeda - Maythux
Nggak, -crop opsi memberi x dan y Itu adalah offset dan gravity. jadi Anda bisa menggunakannya ke waktu untuk memotong persegi - M.Fooladgar
Saya mempostingnya sebagai jawaban, terima kasih atas bantuan Anda, tetapi Anda harus menuliskannya di jawaban Anda sebelumnya4 - Maythux
@Arronical Terima kasih, saya sudah mendapatkannya dan diposting sebagai jawaban. tolong diperiksa - Maythux


Menggunakan mogrify -crop <W>x<H>+<X>+<Y> <files>.

Hati-hati: file-file tersebut ditimpa tanpa pemberitahuan.


0
2017-11-15 22:34