केवल कमांड लाइन टूल का उपयोग करके छवियाँ क्रॉप करना


34

मैं अपने CLI केवल Ubuntu पर कमांड लाइन टूल का उपयोग करके एक छवि क्रॉप करना चाहता हूं जो केवल चार दिशाओं के लिए फसल के लिए पिक्सेल का संकेत देता है। (ऐसा ही जो लिब्रेफॉइस में पाया जाता है)

उदाहरण के लिए:

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

क्या ऐसा कोई उपकरण है (GUI नहीं)?



@ थोमसवेलर यह कमांड लाइन के लिए पूछ रहा है न कि जीयूआई टूल के साथ-साथ आपके द्वारा दिए गए लिंक किए गए सवाल जीयूआई के बारे में है इसलिए कृपया फिर से सवाल पढ़ें
मेथक्स

2
लिंक किए गए प्रश्न उपकरण के प्रकार को निर्दिष्ट नहीं करते हैं। दूसरा उत्तर कमांड लाइन टूल के बारे में है: इमेजमैगिक। मुझे पता है कि एसओ पर चर्चा होती है कि क्या प्रश्न एक डुप्लिकेट है, यदि उत्तर समान है। लोग सहमत या असहमत हो सकते हैं।
थॉमस वेलर

1
@ThomasWeller लेकिन जवाब सुविधाजनक नहीं है, इसके अलावा यह नहीं दिखाता है कि उसने कैसे और क्यों विकल्पों का उपयोग किया है .. सच कहूँ तो आप उपयोग किए गए विकल्पों को समझते हैं? मैं खुद उस जानकारी को प्राप्त नहीं कर सकता, यह यहाँ पहला उत्तर है, यह कोई स्पष्टीकरण नहीं है जो उत्तर को निम्न गुणवत्ता वाला बनाता है
Maythux

@downvoters क्या मुझे पता होना चाहिए कि आपके साथ क्या मामला है? !!
मेथक्स

जवाबों:


38

यहां convertइमेज मैजिक पैक से वर्कअराउंड किया गया है ।

sudo apt-get install imagemagick

एक तस्वीर के लिए image.jpg

$ identify image.jpg 

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

जैसा कि ऊपर दिखाया गया है, इनपुट छवि 720x482px है।

अब फसल करने के लिए आपको दो कारकों का निर्धारण करना होगा:

  1. क्रॉपिंग का प्रारंभिक बिंदु (2 दिशाएं शामिल हैं)
  2. फसली आयत का आकार (यहाँ आप अन्य दिशाओं को शामिल कर सकते हैं)

अब image.jpgऊपर की छवि पर वापस , मैं फसल करना चाहता हूं:

  • शीर्ष 5 पीएक्स
  • नीचे 7px
  • सही 14px
  • 3 पी सी छोड़ दिया

तब आप इसे ( widthx height+ left+ top/ wx h+ l+ tप्रारूप) के साथ कर सकते थे:

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

अभी व

$ identify output.jpg 

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

2
यह कहा जाता है कि Imagemagick 7 "कन्वर्ट" के स्थान पर "magick" कमांड का उपयोग करता है। अगर किसी को command not found: convertसमस्या है, तो कोशिश करेंmagick
iplus26

1
यह एक बड़ी मदद थी, लेकिन मुझे "गणना" के आसपास अपना सिर लपेटने में थोड़ा समय लगा। मेरे पास 1280x1024 छवियों का एक सेट था, जिसमें से मुझे ऊपर और नीचे की फसल की जरूरत थी, इसलिए अंतिम छवि में मूल ("एक ब्लैक बैंड टॉप और बॉटम को हटाकर)" मध्य "718 पिक्सल होगा।" मुझे इसका उपयोग करने की आवश्यकता थी: convert in.png -crop 1280x718+0+152 out.pngजहां मैं उस लाइन को समझने के लिए समझता हूं:, convert in.png -crop [final-right-x]x[final-right-y]+[crop-left]+[crop-top] out.pngहालांकि यह @ Maythux की संख्याओं से मेल नहीं खाता ... FWIW!
Dɑvïd

3
703x470इसके बजाय नहीं होना चाहिए 713x470? जैसा कि बाएँ + दाएँ क्रॉपिंग = 3+14 = 17px, कि जब से घटाया जाता 720है 703, और नहीं 713
मूनक्रेटर

इससे मदद मिली! मैंने 713px (जो मैं सहमत हूं) के बजाय दोनों 703px FIX को संपादित करने का सुझाव दिया, और प्रारूप में बाएं और शीर्ष पर उल्टाWxH+l+t
el-teedee

12

यदि आप सफेद क्षेत्रों को दूर करना चाहते हैं, तो imagemagickइसके लिए एक विशेष आदेश है:

convert -trim input.jpg output.jpg

9

"उपयोगकर्ता के अनुकूल" cli- विकल्प बनाने के लिए, नीचे दी गई स्क्रिप्ट का उपयोग किया जा सकता है। बस कमांड चलाएं:

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

यह एक क्रॉप्ड इमेज बनाता है image.jpeg, जिसका नाम image[cropped].jpegउसी डायरेक्टरी में रखा गया है।

लिपी

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

कैसे इस्तेमाल करे

  1. स्क्रिप्ट का उपयोग करता है imagemagick

    sudo apt-get install imagemagick
    
  2. में crop_image(कोई विस्तार नहीं) के रूप में ऊपर स्क्रिप्ट सहेजें ~/bin

  3. यदि आवश्यक हो तो निर्देशिका बनाएं। उस स्थिति में, source ~/.profileनिर्देशिका को दिखाने के लिए भी चलाएं $PATH
  4. स्क्रिप्ट को निष्पादन योग्य बनाएं।

अब केवल इसके नाम से स्क्रिप्ट चलाएं, जैसा कि उल्लेख किया गया है, उदाहरण के लिए:

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

रिक्त स्थान कोई समस्या नहीं है, जब तक उस मामले में, आप उद्धरण का उपयोग करते हैं:

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

@Maythux यकीन नहीं है कि आपके नवीनतम संपादन का क्या मतलब है, आपका मतलब है कि उपरोक्त समाधान आपके सिस्टम पर काम नहीं करता है? यह केवल cli है।
जैकब वलिज्म

मुझे खेद है कि मैं तीन दिन पहले बंद हो गया था, इसलिए मुझे नहीं पता कि आपको एक डाउनवोट क्यों मिलता है, इसके बजाय यहां मेरा +1 आपके लायक है।
मेथक्स

लेकिन मुझे लगता है कि यह भी काम करता है यह एक नौसिखिया के लिए एक देशी फसल उपकरण का उपयोग करने की तुलना में थोड़ा कठिन होगा, लेकिन मेरे लिए मैं आपके तरीके से प्यार करता हूं, बहुत अच्छा, देरी के लिए फिर से खेद
Maythux

वाह धन्यवाद। इस वजह से मुझे यह मिला: meta.askubuntu.com/questions/14082/…
जैकब व्लिजम

मैं नहीं जानता कि क्यों एक अच्छा जवाब / सवाल प्रतिष्ठा का खराब उपयोग होने तक नीचे रखा जाता है, यह सवाल gots -3 !!! hhhh मुझे ऐसा क्यों नहीं मिलता
Maythux

3

आप image magickपैक में कन्वर्ट कमांड का उपयोग कर सकते हैं ।
स्थापित करने के लिए sudo apt-get install imagemagickया sudo yum install ImageMagick
फिर -crop geometryछवि को क्रॉप करने के लिए उपयोग करें। अधिक पढ़ने के लिए यहां पढ़ें


अनुपात से यह फसल और विभिन्न मार्जिन के साथ नहीं
मेथक्स

नहींं, -cropविकल्प देता है xऔर yयह ऑफसेट और हैं gravity। इसलिए आप इसका उपयोग समय-समय पर एक वर्ग
M.Fooladgar

मैंने इसे उत्तर के रूप में पोस्ट किया, वैसे भी आपकी मदद के लिए धन्यवाद, लेकिन आपको यह लिखना चाहिए कि आपके उत्तर में 4 से पहले
Maythux

@ एरॉनिकल धन्यवाद मुझे पहले ही मिल गया है और उत्तर के रूप में पोस्ट किया गया है। कृपया इसे जांचें
Maythux

3

का उपयोग करें mogrify -crop <W>x<H>+<X>+<Y> <files>

सावधान: नोटिस के बिना फाइलें अधिलेखित हो जाती हैं।


1

cropआदेश 4 बातें की जरूरत है। इसे समझने के लिए आप जिस छवि को क्रॉप करना चाहते हैं, उसे लें। अब, कल्पना करें कि छवि पर, आप उस आकार की एक आयत बना रहे हैं जिसे आप बनाए रखना चाहते हैं। इस आयत के बाहर के क्षेत्र को समाप्त कर दिया जाएगा। आयत को झुका हुआ नहीं होना चाहिए अर्थात ऊपर की तरफ क्षैतिज होना चाहिए।

अब, इन 4 बातों पर ध्यान दें:

  1. आयत के पिक्सेल में चौड़ाई (W)
  2. आयत की ऊँचाई (H)
  3. छवि के बाएं मार्जिन / छोर (एल) से आयत के बाएं ऊर्ध्वाधर पक्ष की दूरी
  4. छवि के शीर्ष मार्जिन / छोर से आयत के शीर्ष पक्ष की दूरी (टी)।

इस प्रकार अब आपके पास डब्ल्यू, एच, एल और टी मूल्य हैं। अब तक सब ठीक है। पिक्सल को जानने के लिए, आप उबंटू में क्रूल टूल इंस्टॉल कर सकते हैं । बहुत उपयोगी।

अब, टर्मिनल खोलें और उस फ़ोल्डर पर जाएं जहां छवि संग्रहीत है। निम्नलिखित कमांड का उपयोग करें और W, H, L और T के मानों को ठीक से रखें:

convert input.jpg -crop WxH+L+T output.jpg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.