टर्मिनल से छवियों को घुमाएं


34

मेरे पास बहुत सी छवि के साथ एक निर्देशिका है लेकिन वे गलत अभिविन्यास में हैं। मैं ओरिएंटेशन को सही करने के लिए छवियों को घुमाना चाहता हूं (ज्यादातर ) 90 o )। छवि (शॉटवेल फोटो) दर्शक का उपयोग करके मैं उन्हें बारी बारी से क्लिक करके व्यक्तिगत रूप से घुमा सकता हूं लेकिन यह बहुत थकाऊ है।

मैंने देखा man shotwellऔर shotwell --help-allवहाँ कुछ भी नहीं है जो बताता है कि कमांड लाइन से रोटेट कमांड को कैसे लागू किया जाए।

क्या कोई तरीका है जो मैं टर्मिनल से शॉटवेल (या किसी अन्य दर्शक) की रोटेट कमांड को लागू कर सकता हूं? या छवियों को घुमाने के लिए किसी अन्य तरीके का भी स्वागत है।


1
यदि आप इसे नॉटिलस से चाहते हैं तो askubuntu.com/a/432662/15811 पर पूछें । लेकिन टर्मिनल आदेश आप चाहते हैं "ImageMagick" से "परिवर्तित" है
Rinzwind

1
यदि आप एक दोषरहित रोटेशन चाहते हैं और फ़ाइलें jpeg हैं, तो jpegtran पर एक नज़र डालें ; imagemagick एक (स्पष्ट रूप से छोटा) हानिपूर्ण रोटेशन करेगा
रमनो

जवाबों:


39

यदि आप एक शुद्ध बैश कार्यान्वयन की तलाश कर रहे हैं, तो ImageMagick की convertकमांड वह है जो आप देख रहे हैं:

for szFile in /path/*.png
do 
    convert "$szFile" -rotate 90 /tmp/"$(basename "$szFile")" ; 
done

ऊपर मौजूदा फ़ाइलें बरकरार रहेंगी और नए घुमाए गए लोगों को /tmpकॉपी करें ताकि आप उन्हें स्थानांतरित कर सकें या कहीं और कॉपी कर सकें या रूपांतरण के बाद और सत्यापन के बाद मौजूदा लोगों को बदल सकें

(और यह उबंटू के सभी हालिया रिलीज पर काम करेगा क्योंकि यह मानक सॉफ्टवेयर है)


28
for file in *.JPG; do convert $file -rotate 90 rotated-$file; done

यह copy- जाएगा घुमाने -और-नाम बदलने के लिए अपनी फ़ाइलें।

यदि आप मूल फ़ाइलों को अभी तक अछूता छोड़ना चाहते हैं, तो यह विधि आपके लिए अच्छा काम कर सकती है ...

ध्यान दें कि यह केस-संवेदी है: यदि आपकी फ़ाइलों का नाम * .jpg लोअर-केस (या * .png ...) के अनुसार बदला जाए।


4

यदि आप mogrifyImageMagick सुइट से इन-प्लेस को अधिलेखित करना चाहते हैं, तो इसे प्राप्त करना सबसे आसान तरीका है:

# counterclockwise:
mogrify -rotate -90 *.jpg

# clockwise:
mogrify -rotate 90 *.jpg

CAVEAT : यह JPEG फ़ाइलों के लिए दोषरहित रोटेशन विधि नहीं है, https://www.imagemagick.org/discourse-server/viewtopic.php?t=5899jpegtranइसे प्राप्त (अप्राप्त):

# counterclockwise
ls *.jpg | xargs -n 1 jpegtran -perfect -rotate 270

# clockwise
ls *.jpg | xargs -n 1 jpegtran -perfect -rotate 90

पूरी तरह से काम करता है
पॉल जोन्स

जब यह सरल, त्वरित, बैच छवि संपादन की बात आती है, तो मोगरीफ काफी स्विस चाकू होता है
EA304GT

सबसे अच्छा जवाब, आप ऐसा क्यों नहीं करना चाहेंगे?
mLstudent33

1
@ mLstudent33: अच्छा सवाल है। ऐसा प्रतीत होता है कि mogrifyJPEG फ़ाइलों के लिए दोषरहित नहीं है, लेकिन jpegtranहै।
krlmlr

3

यहां बताया गया है कि मैं इसे कैसे करता हूं:

  1. GThumb स्थापित करें

    sudo apt-get install gthumb
  2. नॉटिलस खोलें और अपनी छवियों निर्देशिका पर जाएं। एक पर राइट क्लिक करें और चुनें Open with -> gthumb

  3. viewमेनू के तहत कुंजी चुनें Browserया दबाएं Esc। यह निर्देशिका ब्राउज़र को खोलेगा जो आपकी सभी छवियों को दिखाएगा।

    यहाँ छवि विवरण दर्ज करें

  4. Ctrlउन चित्रों को दबाएँ और चुनें जिन्हें आप घुमाना चाहते हैं या उन सभी को Ctrl+ के माध्यम से चुनें A

  5. टूलबार पर, अपनी पसंद के आधार पर चयन करें Toolsऔर फिर Rotate Rightया उसके Rotate Leftआधार पर।

    यहाँ छवि विवरण दर्ज करें


0

बैकअप का एक सेट बनाने के लिए एक अच्छा समाधान है (उदाहरण के लिए उपसर्ग backup-), नई फ़ाइलों का एक सेट बनाने वाली मूल फ़ाइलों को घुमाएं (जैसे उपसर्ग rotated-), जिससे आपको एक सेट मिलेगा ।

  • img-1.png
  • backup-img-1.png
  • rotated-img-1.png
  • img-2.png
  • ...और इसी तरह

mv/ cpउपकरण [बैश ग्लोबिंग] केवल उपसर्ग जोड़ सकते हैं, यह गंदा उन्हें ले जाने के लिए (यह पैरामीटर विस्तार का उपयोग करेंगे, ewww ...)

यह renameटूल आपको s/before/after/प्रतिस्थापन सिंटैक्स ( sedटूल से) का उपयोग करने की अनुमति देता है जो कि उपसर्ग को सुरक्षित रखने और मूल फ़ाइलों को अधिलेखित करने के लिए है, इसलिए चित्रों के दिए गए सेट के लिए आपकी समग्र प्रक्रिया img-{1..n}.png होगी:

for imgf in img-*.png; do mv "$imgf" "backup-$imgf"; done
for imgf in backup-img-*.png; do convert "$imgf" -rotate 90 "rotated-$imgf"; done

ध्यान दें:

  • आप इसके cpबजाय का उपयोग कर सकते हैं mv, लेकिन फिर मूल की 2 प्रतियां हैं जो चारों ओर झूठ बोल रही हैं (नीचे की ओर आपको उपसर्गों का संघनन प्राप्त होता है, " rotated-backup-...")
  • रोटेशन दक्षिणावर्त है ( -rotate 270आपको 90 ° एंटी-क्लॉकवाइज मिलता है)
  • प्रगति को ट्रैक करने के लिए, कॉल के echo "Rotating ${imgf#backup-} ... ";बाद convert(पहले done) जोड़ें
  • अधिक कॉम्पैक्ट रूप के लिए (जैसे क्रमांकित फ़ाइलों का एक सेट), echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";इसके बजाय कुछ पैरामीटर विस्तार का उपयोग करें

    (आप एक ही बैश परम विस्तार में उपसर्ग और प्रत्यय को हटा नहीं सकते इसलिए उपयोग करें cut)

फिर सत्यापन के बाद आपने गड़बड़ नहीं की है, चित्रों को मूल में वापस लाकर हटाएं

rename 's/^rotated-//;' rotated-*
rm backup-img-*

0

आप इस कोड को कॉपी / पेस्ट कर सकते हैं, और इसे सहेज सकते हैं rotate.sh

#!/bin/bash -e

CUR_DIR=$(pwd)
cd $1
for file in *.jpg
do
    convert $file -rotate 90 $file
done
cd $CUR_DIR

इस फ़ाइल को सहेजने के बाद, इसे टर्मिनल का उपयोग करके चलाएं ./rotate.sh folder_containing_images


कृपया अपना कोड और दिए गए लिंक की जाँच करें!
जॉर्ज उडेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.