Imagemagick के साथ सफेद स्थान कैसे डालें?


15

इस INPUT से OUTPUT प्राप्त करने के लिए कौन से पैरामीटर "कन्वर्ट" (?) की आवश्यकता है?

इनपुट:

यहाँ छवि विवरण दर्ज करें

उत्पादन:

यहाँ छवि विवरण दर्ज करें

जवाबों:


8

जैसा कि मैं नहीं चाहता था कि चित्र दाहिनी ओर से प्रवाहित हों, मुझे एक अलग दृष्टिकोण (ImageMagick के 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

हालाँकि, अधिकांश ImageMagick प्रश्नों के साथ, आप विभिन्न साधनों के साथ एक ही लक्ष्य प्राप्त कर सकते हैं। आप montageइस तरह का उपयोग कर सकते हैं :

 montage null: in.png -tile 2x1 -geometry +17+0 out1.png

यह विशेष 'null:' छवि का उपयोग करता है ताकि इसे उसके साथ जोड़ा जा सके in.png


यह सच है कि आपके साथ convertउन मूल्यों को फिर से गणना करने की आवश्यकता है -extentजिन्हें आपको प्रत्येक इनपुट चित्र के लिए पास करने की आवश्यकता है जो कि एक अलग आकार है।

identify -formatछवि का आयाम पाने के लिए पहला उपयोग :

 identify -format '%Wx%H' in.png

इसे कुछ इस तरह लौटाना चाहिए:

 449x352

ठीक है, अब आपको अंतिम 520x352मूल्य प्राप्त करने के लिए, अपना वांछित 71 पिक्सेल जोड़ना होगा । लेकिन आपको उस गणना को अपने दिमाग में करने की आवश्यकता नहीं है:

ImageMagick बचाव के लिए !, और इसकी जादू गणना क्षमताओं ... :-)

आप identify -formatउस गणना को करने के लिए कमांड बता सकते हैं:

 identify -format '%[fx:W+71]x%H'

अब आपको इसका परिणाम देना चाहिए:

 520x352

इसलिए यह मानते हुए कि आप किसी भी चित्र के बाईं ओर 71 पिक्सेल चौड़ाई की 'सफ़ेद पट्टी' जोड़ना चाहते हैं, आप निम्न एकल कमांडलाइन का उपयोग कर सकते हैं:

 convert \
    in.png \
   -gravity east \
   -background white \
   -extent $(identify -format '%[fx:W+71]x%H' in.png) \
    out2.png

देखा! एक कमांडलाइन (जो ईमानदार होने के लिए 2 कमांड्स को एनकैप्सुलेट करती है) और आप इसे अपने सभी पीएनजी, जेपीईजी, जीआईएफ, ... को एक निर्देशिका में ऑटो-मैजिकिक रूप से अपनी 71pixels की सफेद पट्टी जोड़ सकते हैं:

 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
मैं आपको दिखाता हूं कि कैसे।
केव।

@kev: आपका कमांड बिल्कुल वैसा नहीं करता जैसा @gasko पीटर चाहता था। आपको इस्तेमाल करना चाहिए था -extend 520x352। +1 'सही दिशा' के लिए हालांकि :-P
कर्ट फ़ेफ़ेले

sed 's # -extend # -extent # g'
कर्ट फ़िफ़ल

मुझे -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 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.