আমি একটি প্যাটার্নের সাথে মেলে এমন একটি ডিরেক্টরিতে সমস্ত চিত্র ঘোরানো চাই।
এখন পর্যন্ত আমার কাছে রয়েছে:
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
কিন্তু কোন আউটপুট দেয়?
উত্তর:
আপনার কোড নিয়ে বেশ কয়েকটি সমস্যা রয়েছে। প্রথমত, আপনি এলএস পার্স করছেন যা একটি খারাপ ধারণা । আপনার উল্লেখ করার সাথে $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ইমেজম্যাগিকের
সাথে সমস্ত চিত্র ঘোরানোর জন্য আরও ভাল ওয়ান-লাইনার
mogrify -rotate 90 /tmp/p/DSC*.JPG
সব ঘোরান Infact হবে .JPGসংগে DSCমধ্যে pডিরেক্টরি
Mogrify (ImageMagick এর অংশ) থেকে পৃথক 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সুনির্দিষ্ট কিছু নেই, এটি পুরোপুরি স্ট্যান্ডার্ড পসিক্স সিন সিনট্যাক্স।
বিশ্লেষণ করবেন না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
আপনি এই কোডটি উবুন্টুতে অনুলিপি / অনুলিপি করতে পারেন এবং এটিকে "রোটেট.শ" হিসাবে সংরক্ষণ করতে পারেন
#!/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করা আরও উপযুক্ত imho হবে। চিয়ার্স!