इस INPUT से OUTPUT प्राप्त करने के लिए कौन से पैरामीटर "कन्वर्ट" (?) की आवश्यकता है?
इनपुट:
उत्पादन:
इस INPUT से OUTPUT प्राप्त करने के लिए कौन से पैरामीटर "कन्वर्ट" (?) की आवश्यकता है?
इनपुट:
उत्पादन:
जवाबों:
जैसा कि मैं नहीं चाहता था कि चित्र दाहिनी ओर से प्रवाहित हों, मुझे एक अलग दृष्टिकोण (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
स्थिति ऑफसेट है।
मेरा इमेजमैजिक संस्करण '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
...
प्रलेखन: http://www.imagemagick.org/Usage/crop/#extent
convert in.png -gravity east -extent 500x352 out.png
-extend 520x352
। +1 'सही दिशा' के लिए हालांकि :-P
-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