ImageMagick का उपयोग करके कई छवियों को मिलाएं


166

मैं ImageMagick का उपयोग करके एक छवि में कई छवियों को संयोजित करना चाहूंगा। थोड़ा बेहतर व्याख्या करने के लिए, मैं चाहता हूं कि परिणाम इसी तरह दिखे:

यही है, मेरे पास कई स्क्रीनशॉट हैं, और मैं उन्हें एक-दूसरे के ऊपर मूल छवियों के साथ एक छवि में बदलना चाहता हूं।

Googling के द्वारा, मैं 'समग्र' कमांड पर आया हूं, लेकिन मुझे नहीं पता कि क्या है, और उस स्थिति में मुझे जो परिणाम चाहिए, उसका उपयोग कैसे करना है।



जवाबों:


256

नामित इनपुट फ़ाइलों की किसी भी संख्या के लिए :in-<something>.jpg

convert -append in-*.jpg out.jpg

पूर्ण "ग्लोब" प्राप्त करने के बजाय विशिष्ट फ़ाइलों को संलग्न करने या संख्याओं को छोड़ने के लिए, आप इनपुट फ़ाइलों का स्पष्ट रूप से उल्लेख कर सकते हैं और appendबाद में कमांड डाल सकते हैं।

इन-5.jpg में-1.jpg परिवर्तित in- एन .jpg + संलग्न बाहर-in1 से अधिक in5 और में एन .jpg

आप ऊर्ध्वाधर पेस्ट-अप के लिए -append(इसके बजाय +append) का उपयोग कर सकते हैं ।

या:

montage -mode concatenate -tile 1x in-*.jpg out.jpg

एक फ़ाइल भी बनाएगा out.jpgजिसमें स्रोत चित्रों का एक ऊर्ध्वाधर समतलन होता है।

convert

एकल पंक्ति या स्तंभ में सरल समाशोधन appendके लिए, convertउपकरण का विकल्प पर्याप्त है। ध्यान दें कि -appendसभी छवियों खड़ी concatenates साथ एक स्तंभ बनाने, एन पंक्तियाँ, और +append, संयोजित क्षैतिज के साथ एक पंक्ति बनाने n कॉलम।

(देखें ImageMagick: कमांड-लाइन विकल्प ।)

montage

लेआउट पर बेहतर नियंत्रण पाने के लिए, हमें montageउपकरण की आवश्यकता होगी । विकल्प की montage -mode concatenateतरह एक साथ इनपुट छवियों को गोंद करेगा appendऔर -tile 1xलागू होने वाले लेआउट को नियंत्रित करेगा।

tileप्रारूप कॉलम × पंक्तियों का अनुसरण करता है , लेकिन दोनों तरफ गायब हो सकता है और montageयह पता लगाएगा कि बाधाओं को कैसे पूरा किया जाए।

हम 1xयहां उसी तरह का प्रभाव प्राप्त करने के लिए (किसी भी संख्या में पंक्तियों के साथ एक कॉलम) का उपयोग कर रहे हैं -append। इसके बिना -tile 1x, यह छवियों की तरह शामिल हो जाएगा +append, डिफ़ॉल्ट करने के लिए -tile x1(एक पंक्ति में किसी भी संख्या में कॉलम)।

(देखें ImageMagick उदाहरण: असेंबल, छवियों के सरणी ।)


1
धन्यवाद। परिशिष्ट ठीक काम करता है, लेकिन मुझे लगता है असेंबल टूटी हुई है: अगर भूतस्क्रिप्ट फोंट स्थापित नहीं हैं, तो आप छवियों को एनोटेट नहीं कर रहे हैं, तो ईवीएन बाहर निकल जाएगा। फोंट मांग पर लोड किया जाना चाहिए, अग्रिम में नहीं।
ब्राम

@ बम: मुझे नहीं पता था कि और दृढ़ता से सहमत हूं। क्या आप जानते हैं कि GraphicsMagick समान व्यवहार करता है?
पेठ

2
@ मायकेरोबिनसन convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpgको काम करना चाहिए।
गूजिल्ली

2
ध्यान दें कि convert -tile 2x2आदि कमांड फाइलों को वर्णानुक्रम में पढ़ेगा । इसका मतलब यह है कि नाम वाले चूजों 0-10को पढ़ा जाएगा 0,10,1,2,..,9। इस मूल चीज़ को महसूस करने के लिए मुझे लगभग 2 घंटे लगे।
Blauhirn

1
@ बेलौहर्न: क्या यह फ़ाइल नाम छँटाई में परिवर्तित होता है, या यह कि आपका ग्लोब उस क्रम में फाइल लौटा रहा है? उदा ls *उस क्रम में उन मूल्यों को वापस करेगा।
n
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.