এই ইনপুট থেকে এই আউটপুটটি পেতে "রূপান্তর" (?) কোন পরামিতিগুলির প্রয়োজন?
ইনপুট:
আউটপুট:
এই ইনপুট থেকে এই আউটপুটটি পেতে "রূপান্তর" (?) কোন পরামিতিগুলির প্রয়োজন?
ইনপুট:
আউটপুট:
উত্তর:
যেহেতু আমি চিত্রগুলি ডান পাশ দিয়ে ফ্লাশ করতে চাইনি, তাই আমাকে একটি ভিন্ন পদ্ধতির ব্যবহার করতে হয়েছিল (ইমেজম্যাগিকের composite
সরঞ্জাম):
convert -size 500x500 xc:white canvas.png
convert canvas.png in.png -geometry +200+200 -composite out.png
-size
আপনি চান এমন চূড়ান্ত চিত্রের আকার হওয়া উচিত, canvas.png
একটি ফাঁকা সাদা ক্যানভাস, in.png
আপনি প্যাড করতে চান এমন চিত্র হতে পারে এবং -geometry
এটি পজিশনিং অফসেট।
আমার ইমেজম্যাগিক সংস্করণটি '6.7.8-0 2012-07-04 Q16'। ডকুমেন্ট অনুসারে @kev কমান্ডের উত্তরটি কাজ করা উচিত:
convert in.png -gravity east -extent 520x352 out.png
তবে বেশিরভাগ ইমেজম্যাগিক প্রশ্নের মতো আপনিও বিভিন্ন উপায়ে একই লক্ষ্য অর্জন করতে পারেন। আপনি এটির montage
মতো ব্যবহার করতে পারেন :
montage null: in.png -tile 2x1 -geometry +17+0 out1.png
এটির সাথে এটি যুক্ত করতে বিশেষ 'নাল:' চিত্র ব্যবহার করে in.png
।
এটি সত্য যে প্রতিটি ইনপুট ছবি যা আলাদা আকার পেয়েছে তার জন্য convert
আপনার যে মানগুলি পাঠাতে হবে তা পুনরায় গণনা করা দরকার -extent
।
identify -format
চিত্রটির মাত্রা পেতে প্রথমে ব্যবহার করুন :
identify -format '%Wx%H' in.png
এটি এমন কিছু ফিরে আসবে:
449x352
ঠিক আছে, চূড়ান্ত 520x352
মান পেতে এখন আপনাকে নিজের পছন্দসই 71 পিক্সেল যুক্ত করতে হবে । তবে আপনার নিজের মস্তিষ্কে সেই গণনা করার দরকার নেই:
ইমেজম্যাগিকে রেসকিউ !, এবং এর যাদু গণনা ক্ষমতা ... :-)
identify -format
আপনার পক্ষে সেই গণনাটি করতে আদেশটি বলতে পারেন :
identify -format '%[fx:W+71]x%H'
এটি এখন আপনাকে একটি ফলাফল দেয়:
520x352
সুতরাং ধরে নিই যে আপনি যে কোনও ছবির বামে p১ পিক্সেল প্রস্থের একটি 'সাদা স্ট্রিপ' প্যাড / যুক্ত করতে চান, আপনি নিম্নলিখিত একক কমান্ডলাইনটি ব্যবহার করতে পারেন:
convert \
in.png \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' in.png) \
out2.png
ভাল খবর! একটি কমান্ডলাইন (যা 2 কমান্ডকে সত্যায়িত করার জন্য সংযোজন করে) এবং আপনি এটিকে আপনার সমস্ত পিএনজি, জেপিইজি, জিআইএফ, ... একটি ডিরেক্টরিতে স্বতঃ-যাদুতে আপনার প্রতিটি 71 পিক্সেল সাদা স্ট্রিপ যুক্ত করতে পারেন:
for i in *.png *.jpeg *jpg *.gif; do
convert \
${i} \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' ${i}) \
$(convert ${i} -format "71-pixels-padded-left---%t.%e" info:)
done
প্রতিটি চিত্রের জন্য এর আউটপুট একই ফাইল টাইপ থাকে। অবশ্যই আপনি সমস্ত আউটপুটকে পিএনজি হিসাবে প্রয়োগ করতে পারেন (বা আপনি যা চান)। %t.%e
কমান্ডের অংশটি কেবল এর সাথে প্রতিস্থাপন করুন %t.png
...
ডকুমেন্টেশন: http://www.imagemagick.org/Usage/crop/#extent
convert in.png -gravity east -extent 500x352 out.png
-extend 520x352
। 'সঠিক দিকনির্দেশের' জন্য +1 যদিও :
-background transparent
একটি স্বচ্ছ পটভূমি সংরক্ষণের জন্য আমাকে যুক্ত করতে হয়েছিল।
আমি এই আদেশটি আমার মধ্যে সংজ্ঞায়িত করেছি .bash_profile
। এটি প্রস্থ এবং উচ্চতায় আপনি যে প্যাডিং চান তা থেকে চূড়ান্ত চিত্রের আকারটি স্বয়ংক্রিয়ভাবে গণনা করবে (শূন্যগুলির সাথে কাজ করে):
# arithmetic with awk
calc() { awk "BEGIN { print $* }"; }
# pad an image
img_pad() {
local width height pw ph
[ $# -lt 3 ] && { echo "Usage: img_pad <Input> <WxH> <Output>"; return; }
# parse current size and padding
IFS=x read width height <<< "$(identify "$1" | awk '{print $3}')"
IFS=x read pw ph <<< "$2"
# new widht and height
width=$(calc "$width + 2*$pw")
height=$(calc "$height + 2*$ph")
echo "Converting '$1' to '$3' with size ${width}x${height} (+w=${pw}, +h=${ph})."
convert "$1" -gravity center -extent "${width}x${height}" "$3"
}
ব্যবহারের উদাহরণ:
# pad 50px left and right, no vertical padding
img_pad in.png 50x0 out.png