मैं एक निर्देशिका से मेल खाने वाली निर्देशिका में सभी छवियों को घुमाना चाहता हूं।
अब तक मेरे पास:
for file in `ls /tmp/p/DSC*.JPG`; do
convert $file -rotate 90 file+'_rotated'.JPG
done
लेकिन यह कोई उत्पादन नहीं देता है?
मैं एक निर्देशिका से मेल खाने वाली निर्देशिका में सभी छवियों को घुमाना चाहता हूं।
अब तक मेरे पास:
for file in `ls /tmp/p/DSC*.JPG`; do
convert $file -rotate 90 file+'_rotated'.JPG
done
लेकिन यह कोई उत्पादन नहीं देता है?
जवाबों:
आपके कोड के साथ काफी कुछ समस्याएं हैं। सबसे पहले, आप ls को पार्स कर रहे हैं जो एक बैड आइडिया है । आपको चर को संदर्भित करने की भी आवश्यकता है $file
क्योंकि आप इंगित करते हैं और आपको इसे भी उद्धृत करना चाहिए ताकि यह रिक्त स्थान पर न टूटे । आप घोषणा कर रहे हैं num
लेकिन इसका उपयोग कभी नहीं किया जाता है। एक सुरक्षित तरीका होगा:
find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do
convert "$file" -rotate 90 "$file"_rotated.JPG
done
यह तब भी समस्या होगी जब आपकी फ़ाइलों में नई सुर्खियाँ हों, लेकिन कम से कम आपके मार्ग में रिक्त स्थान न हों।
यदि फाइलें एक ही डायरेक्टरी में हैं, तो ग्लोबिंग का उपयोग करके इसे और सरल बनाया जा सकता है। आप foo_rotated.JPG1
इसके बजाय बनाने के लिए पैरामीटर विस्तार का भी उपयोग कर सकते हैं foo.JPG_rotated.JPG
:
for file in /tmp/p/DSC*.JPG; do
convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG
done
mogrify -rotate 90 *.jpg
Imagemagick के
साथ सभी छवियों को घुमाने के लिए बेहतर वन-लाइनर
mogrify -rotate 90 /tmp/p/DSC*.JPG
निर्देशिका में
सभी .JPG
शुरुआत को घुमाएगीDSC
p
मोगरिफ़ ( इमेजमैजिक का हिस्सा) इससे भिन्न Convert
है कि यह मूल फ़ाइल को संशोधित करता है
http://www.imagemagick.org/script/mogrify.php
पीई (पैरामीटर विस्तार) का उपयोग करने वाली एक सरल विधि है
for f in /tmp/p/DSC*.JPG
do
convert -rotate 90 "$f" "${f%.JPG}"_converted.JPG
done
bash
विशिष्ट नहीं है , यह पूरी तरह से मानक POSIX श सिंटैक्स है।
पार्स न करेंls
और ls
यहां आवश्यक नहीं है। इसके अलावा, यदि आप रिक्त स्थान रखते हैं तो आपको अपने चर को उद्धृत करना चाहिए।
for file in *.JPG; do
convert -rotate 90 "$file" rotated_"$file"
done
नहीं एक छवि समाधान, लेकिन
sips -r 90 *.JPG
.JPG 90 डिग्री में समाप्त होने वाली सभी छवियों को घुमाएगा। यह एक अच्छा लाइनर है।
मुझे फ़ाइल को संदर्भित करने की आवश्यकता है $file
, अर्थात
for file in `ls /tmp/p/DSC*.JPG`; do
convert $file -rotate 90 $file+'_rotated'.JPG
done
आप इस कोड को ubuntu में कॉपी / पेस्ट कर सकते हैं, और इसे "rot.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
original_filename.JPG_rotated.JPG"
। जोड़ने"${file%.JPG}"_rotated.JPG
से अधिक उपयुक्त इम्हो होगा। चीयर्स!