উত্তর:
আপনার সেরা বাজি ইমেজম্যাগিক ব্যবহার করা হবে
আমি প্রকৃত ব্যবহারে বিশেষজ্ঞ নই, তবে আমি জানি আপনি এটির সাথে সম্পর্কিত যে কোনও চিত্রই করতে পারেন!
একটি উদাহরণ:
convert image.png image.jpg
এবং এটি রূপান্তরিত চিত্র তৈরির পাশাপাশি আসল রাখবে। ব্যাচ হিসাবে। আমি মনে করি আপনাকে মোগ্রিফি সরঞ্জামটি ব্যবহার করতে হবে (চিত্রশিল্পে যখন একই কমান্ড লাইন থেকে)। মনে রাখবেন যে এটি পুরানো চিত্রগুলিকে ওভাররাইট করে।
আদেশটি হ'ল:
mogrify -format jpg *.png
mogrify -format jpg -background black -flatten *.png
mogrify -format jpeg img.png
2 টি ফাইল থাকার পরে আমার লিনাক্স বাক্সে কেভিনকক্স আপনার কাছে একটি পিএনজি, আসল ছোঁয়াচে থাকা file img.*
এবং একটি নতুন জেপিগ রিপোর্ট করার পরে । সুতরাং এই ক্ষেত্রে আসল ফাইলগুলি ওভাররাইট mogrify
করে না ।
mogrify
ডকুমেন্টেশন থেকে : " এই সরঞ্জামটি আপনার অনুরোধের যে কোনও পরিবর্তনের সাথে convert
মূল চিত্র ফাইলটি ওভাররাইট করা (যদি না আপনি ফর্ম্যাট বিকল্পটি ফাইলের প্রত্যয়টি পরিবর্তন না করেন ) ব্যতীত একই সাথে পরিচিত
আমার আরও কয়েকটি সমাধান রয়েছে।
সবচেয়ে সহজ সমাধানটি ইতিমধ্যে পোস্ট করা মতো। লুপের জন্য একটি সহজ বাশ।
for i in *.png ; do convert "$i" "${i%.*}.jpg" ; done
কোনও কারণে আমি ব্যাশে লুপগুলি এড়ানোর ঝোঁক রাখি তাই এখানে নাম-ম্যাংলিংয়ের জন্য ব্যাশ ব্যবহার করে আরও একটি ইউনিক এক্সার্গ্স পদ্ধতির উপায় রয়েছে।
ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.*}.jpg"'
আমি যেটি ব্যবহার করি। এটি একযোগে একাধিক কাজ চালানোর জন্য জিএনইউ সমান্তরাল ব্যবহার করে, আপনাকে একটি পারফরম্যান্স বাড়া দেয়। এটি অনেকগুলি সিস্টেমে ডিফল্টরূপে ইনস্টল করা হয় এবং এটি প্রায় অবশ্যই আপনার রেপোতে থাকে (এটি একটি ভাল অনুষ্ঠানের আশেপাশে থাকে)।
ls -1 *.png | parallel convert '{}' '{.}.jpg'
আপনার যে প্রক্রিয়া রয়েছে তার সংখ্যার তুলনায় কাজের ডিফল্ট সংখ্যা। আমি আমার ডুয়াল-কোর সিস্টেমে 3 টি চাকরি ব্যবহার করে আরও ভাল সিপিইউ ব্যবহারের সন্ধান পেয়েছি।
ls -1 *.png | parallel -j 3 convert '{}' '{.}.jpg'
এবং যদি আপনি কিছু পরিসংখ্যান চান (একটি ইটিএ, কাজ সমাপ্ত, প্রতি চাকরির গড় সময় ...)
ls -1 *.png | parallel --eta convert '{}' '{.}.jpg'
আপনি যদি জিএনইউ সমান্তরাল ব্যবহার করে থাকেন তবে বিকল্প বিকল্প বাক্য গঠনও রয়েছে।
parallel convert '{}' '{.}.jpg' ::: *.png
এবং কিছু অন্যান্য সংস্করণের জন্য (ডিবিয়ান সহ) অনুরূপ সিনট্যাক্স।
parallel convert '{}' '{.}.jpg' -- *.png
done
লুপের জন্য আপনার এটির শেষে দরকার । এছাড়াও, সমান্তরাল ls
parallel -j 3 --eta convert '{}' '{.}.jpg' ::: *.png
ls
নিজের জন্য পদ্ধতিটি বদ্ধ থাকি কারণ এটি আমার কাছে আরও বোধগম্য।
--
পরিবর্তে ভিন্ন সংস্করণ (এর পরিবর্তে ব্যবহার করুন :::
) - এবং তারপরেও হতাশ হয়ে জিএনইউ সমান্তরালের কিছু বৈশিষ্ট্যের অভাব রয়েছে।
convert
কমান্ড অনেক লিনাক্স ডিস্ট্রিবিউশন পাওয়া করে ImageMagick স্যুট অংশ হিসেবে ইনস্টল করা হয়। convert
ডিরেক্টরিতে সমস্ত পিএনজি ফাইলে চালানোর জন্য এবং সেই দ্বিগুণ এক্সটেনশান সমস্যাটি এড়াতে এখানে বাশ কোড রয়েছে :
for img in *.png; do
filename=${img%.*}
convert "$filename.png" "$filename.jpg"
done
for f in *.png; do convert "$f" "${f/%png/jpg}"; done
যারা কেবল সহজ আদেশগুলি চান:
আসল ফাইলগুলি রূপান্তর এবং রাখুন :
mogrify -format jpg *.png
আসল ফাইলগুলি রূপান্তর এবং সরান :
mogrify -format jpg *.png && rm *.png
পার্টিতে দেরি করে কিন্ডা, তবে যে কেউ ক্লাইমে খুব স্বাচ্ছন্দ্য বোধ করতে না পারে তার জন্য সমস্ত বিভ্রান্তি পরিষ্কার করতে এখানে একটি সুপার ডাম্বড-ডাউন রেফারেন্স এবং ব্যাখ্যা রয়েছে।
উদাহরণ ডিরেক্টরি
bar.png
foo.png
foobar.jpg
সমস্ত মূল পিএনজি ফাইল রাখার পাশাপাশি জেপিজি ফাইল তৈরি করে।
mogrify -format jpg *.png
ফলাফল
bar.png
bar.jpg
foo.png
foo.jpg
foobar.jpg
ব্যাখ্যা
-format
বিকল্পটি বাদ দিয়ে মূল ফাইলটি ওভাররাইট করা । (এইখান থেকে সাইটের : This tool is similar to convert except that the original image file is overwritten (unless you change the file suffix with the -format option)
)- format
বিকল্প নির্দিষ্ট করে যে আপনার বিন্যাস পরিবর্তন করা হবে, এবং পরবর্তী যুক্তি প্রকার (এই ক্ষেত্রে, JPG) হতে হবে।*.png
ইনপুট ফাইলগুলি (সমস্ত ফাইল .png এ শেষ হয়)।সমস্ত পিএনজি ফাইলকে জেপিজিতে রূপান্তর করে, মূল সরিয়ে দেয়।
mogrify -format jpg *.png && rm *.png
ফলাফল
bar.jpg
foo.jpg
foobar.jpg
ব্যাখ্যা
&&
একটি বুলিয়ান অপারেটর। সংক্ষেপে:
0
ত্রুটি মানে।&&
সম্পাদন করে , ত্রুটি না থাকলে ডান অংশটি কেবলমাত্র সঞ্চালিত হবে । এটি দরকারী কারণ আপনি যদি মূল ফাইলগুলিতে রূপান্তর করতে কোনও ত্রুটি ঘটে থাকে তবে আপনি মুছতে চান না।rm
কমান্ড ফাইল মুছে ফেলা হবে।এখন এখানে যারা কিছু গুডিজ এর দ্বারা CLI সঙ্গে আরামদায়ক।
ফাইল রূপান্তর করার সময় যদি আপনি কিছু আউটপুট চান:
for i in *.png; do mogrify -format jpg "$i" && rm "$i"; echo "$i converted to ${i%.*}.jpg"; done
সমস্ত উপ-ডিরেক্টরিতে সমস্ত পিএনজি ফাইল রূপান্তর করুন এবং প্রতিটিটির জন্য আউটপুট দিন:
find . -iname '*.png' | while read i; do mogrify -format jpg "$i" && rm "$i"; echo "Converted $i to ${i%.*}.jpg"; done
সমস্ত উপ-ডিরেক্টরিতে সমস্ত পিএনজি ফাইলকে রূপান্তর করুন all
, ফলাফলের সমস্ত জেপিজিকে ডিরেক্টরিতে রাখুন, তাদের সংখ্যা দিন, মূল পিএনজি ফাইলগুলি সরিয়ে ফেলুন এবং প্রতিটি ফাইলের জন্য যেমন আউটপুট প্রদর্শিত হয় তেমন প্রদর্শন করুন:
n=0; find . -iname '*.png' | while read i; do mogrify -format jpg "$i" && rm "$i"; fn="all/$((n++)).jpg"; mv "${i%.*}.jpg" "$fn"; echo "Moved $i to $fn"; done
while read
অংশটি থেকে মুক্তি পেয়েছেন (এটি প্রতিস্থাপন করুন বা এটি সমস্ত একসাথে মুছে ফেলুন) ...
find . -name "*.png" -print0 | xargs -0 mogrify -format jpg -quality 50
*.jpg
ফাইলগুলি মূল ফাইলগুলির পাশে ফেলে দেয় *.png
, ফাইলের আকার / গুণমান কীভাবে হ্রাস করতে হয় তা দেখায় এবং ডিরেক্টরি বা ফাইলের নামের কোনও বিজোড় অক্ষরের কারণে ভেঙে যায় না।
আমার দ্রুত সমাধান
for i in $(ls | grep .png); do convert $i $(echo $i.jpg | sed s/.png//g); done
for f in ./*.png; do convert "$f" "${f%.*}.jpg"; done
। এটি সম্পূর্ণ অপ্রয়োজনীয় ls
, grep
এবং sed
কলগুলিকে এড়িয়ে যায় (এবং echo
, তবে আইআইআরসি এটি ব্যাশ অন্তর্নির্মিত এবং এর ফলে / খুব কম পারফরম্যান্সের প্রভাব পড়বে না), এবং দুটি পাইপ এবং দুটি সাব-শেল থেকে মুক্তি পাবে এবং এতে টাইপিং কম জড়িত। এটি আরও সামান্য বহনযোগ্য, যেহেতু সমস্ত সংস্করণ ls
পার্স করা নিরাপদ নয়।
অনেক বছর অনেক দেরি হয়ে গেছে, এই উদ্দেশ্যে বিশেষত একটি পিএনজিজেপিগ ইউটিলিটি রয়েছে, যা আমি রচনা করেছি।
@ মার্সিন দ্বারা কোডটি মানিয়ে নেওয়া:
#!/bin/sh
for img in *.png
do
filename=${img%.*}
png2jpeg -q 95 -o "$filename.jpg" "$filename.png"
done
ব্যাচ প্রক্রিয়াজাতকরণের জন্য:
for img in *.png; do
convert "$img" "$img.jpg"
done
আপনি যদিও ইমেজ 1.png.jpg এর মতো ফাইলের নাম দিয়ে শেষ করবেন।
এটি ব্যাশ এবং সম্ভবত বোর্নে কাজ করবে। আমি অন্যান্য শাঁস সম্পর্কে জানি না, তবে কেবলমাত্র পার্থক্যটি সম্ভবত লুপ সিনট্যাক্স হতে পারে।
ফাইলগুলি যখন একাধিক ডিরেক্টরি বিস্তৃত হয় তখন রূপান্তর করতে আমি এটিই ব্যবহার করি। আমার আসলটি টিএনএ থেকে পিএনজি ছিল
find . -name "*.tga" -type f | sed 's/\.tga$//' | xargs -I% convert %.tga %.png
ধারণাটি হ'ল আপনার find
প্রয়োজনীয় ফাইলগুলি, এক্সটেনশনটি বন্ধ করে দিয়ে আবার এটিকে যুক্ত করুন xargs
। সুতরাং পিএনজিকে জেপিজিতে, আপনি এক্সটেনশানগুলি পরিবর্তন করতে এবং আলফা চ্যানেলগুলির সাথে মোকাবেলা করার জন্য একটি অতিরিক্ত জিনিস করতে চান যথা পটভূমিটি সেট করে (উদাহরণস্বরূপ সাদা, তবে আপনি এটি পরিবর্তন করতে পারেন) তারপরে চিত্রটি সমতল করুন
find . -name "*.png" -type f | sed 's/\.png$//' | xargs -I% convert %.png -background white -flatten %.jpg