ইমেজম্যাগিকের সাথে সাদা স্থান কীভাবে প্রবেশ করবেন?


15

এই ইনপুট থেকে এই আউটপুটটি পেতে "রূপান্তর" (?) কোন পরামিতিগুলির প্রয়োজন?

ইনপুট:

এখানে চিত্র বর্ণনা লিখুন

আউটপুট:

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


8

যেহেতু আমি চিত্রগুলি ডান পাশ দিয়ে ফ্লাশ করতে চাইনি, তাই আমাকে একটি ভিন্ন পদ্ধতির ব্যবহার করতে হয়েছিল (ইমেজম্যাগিকের 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এটি পজিশনিং অফসেট।


15

আমার ইমেজম্যাগিক সংস্করণটি '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...


8

ডকুমেন্টেশন: http://www.imagemagick.org/Usage/crop/#extent

convert in.png -gravity east -extent 500x352 out.png

ধন্যবাদ !! তবে আমার ছবিটি যদি 500x352 না হয় - তবে আকারটি পরিবর্তিত হয়?
গ্যাসকো পিটার

1
আমি শুধু আপনাকে কিভাবে দেখায়।
কেভ

@ কেভ: আপনার কমান্ড ঠিক ঠিক তেমনটি করে না যা @ ভাস্কো পিটার চেয়েছিল। আপনার ব্যবহার করা উচিত ছিল -extend 520x352। 'সঠিক দিকনির্দেশের' জন্য +1 যদিও :
কার্ট ফেফিল

সেডের #-এক্সটেন্ড #-এক্সেন্ট # জি '
কর্ট

-background transparentএকটি স্বচ্ছ পটভূমি সংরক্ষণের জন্য আমাকে যুক্ত করতে হয়েছিল।
কাঁপানো

0

আমি এই আদেশটি আমার মধ্যে সংজ্ঞায়িত করেছি .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 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.