मैं ImageMagick (GraphicsMagick) के साथ PNG के कैनवास आकार को कैसे बदलूं? (पारदर्शिता के साथ पैड कैसे करें?)


9

वैकल्पिक रूप से: मैं एक गैर-वर्ग पीएनजी को कैसे ले सकता हूं और पारदर्शिता के साथ छवि के "बाकी" को "भर" दूंगा ताकि परिणामस्वरूप वर्ग छवि में मूल छवि वर्ग में केंद्रित हो?

ULTIMATELY, मैं जो भी चाहता हूं, वह किसी भी आकार के किसी भी जीएम-समर्थित प्रारूप की किसी भी छवि को लेना है, और एक स्केल-डाउन पीएनजी (जैसे आयाम के लिए 40 पिक्सल अधिकतम), पहलू अनुपात बनाए रखा है, गैर-वर्ग के साथ पारदर्शिता-गद्देदार। मूल चित्र, और पहले से तैयार 40x40 पीएनजी पारदर्शिता मास्क के साथ।

मुझे पहले से ही पता है कि कैसे नीचे पैमाने पर और पहलू अनुपात रखना है; मेरे पास पहले से ही मेरे कंपोजिट को लागू करने की आज्ञा है। मेरा एकमात्र गायब टुकड़ा गैर-वर्ग छवियों को पार कर रहा है (पारदर्शिता के साथ पैडिंग)।

एकल आदेश पसंद किया; मल्टी-कमांड चेन स्वीकार्य।

(संपादित करें)

अतिरिक्त जानकारी: यहाँ मैं उपयोग कर रहा है समग्र कमांड:

gm composite -compose copyopacity mask.png source-and-target.png source-and-target.png

जहां मास्क.पिंग के पास स्रोत-और-लक्ष्य के लिए सफेद पिक्स हैं, जो मैं और-टारगेट के पारदर्शी (और पारदर्शी बनने के लिए) के लिए पारदर्शी पिक्सल चाहते हैं।

जवाबों:


7

यह कमांड किसी भी आकार की इनपुट फ़ाइल लेगा और इसे पारदर्शिता के साथ 40x40 वर्ग और पैड में फिट करेगा:

convert \
   original.png \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
  -compose Copy_Opacity \
  -composite mask.png \
   original-resized.png

gravityविकल्प छवि दोनों दिशाओं में केंद्रित है सुनिश्चित करता है, और transparentजहाँ कहीं भी कोई पिक्सल हैं प्रयोग किया जाता है। फिर के साथ कंपोजिंग की जाती हैmask.png


तो हम इसे एक शॉट में नहीं कर सकते composite?
पिस्टन

@Pistos मैं इस बात पर स्पष्ट नहीं हूं कि आप समग्र के साथ क्या कर रहे हैं - यह आकार बदलने के बाद केवल थंबनेल के कुछ हिस्सों को छिपाने / दिखाने के लिए एक पारदर्शिता मुखौटा है? क्या आप अभी तक आपके पास मौजूद कमांड अनुक्रम को संपादित और जोड़ सकते हैं, इसलिए हम देख सकते हैं कि क्या इसे संयोजित किया जा सकता है?
पॉल

@Pistos मुझे लगता है कि सबसे अच्छा तरीका यह है कि कंपोज़िटिंग को दूसरे तरीके के बजाय -कॉनवर्ट करना है। मैंने ऊपर अपना उत्तर अपडेट कर दिया है।
पॉल

बंद करें, लेकिन काफी नहीं। आपके आदेश के रूप में काम नहीं किया है, और समायोजन के साथ भी, यह काम नहीं किया। यह ठीक है, मैं इसे दो चरणों में करूंगा। सीएलआई के चरणों को पूरा करने के बाद मैं यहां चीजों को अपडेट करूंगा। एक बार फिर धन्यवाद।
पिस्टन

मैं विकल्प से -filter Catromपहले thumbnailजोड़ूंगा क्योंकि मेरे अनुभव से यह आम तौर पर उच्च गुणवत्ता की छवियां पैदा करता है।
3

6

एक फ़ोल्डर से सभी PNGs बदलने के लिए एक कमांड:

mogrify \
 -resize 50x50 \
 -background transparent \
 -gravity center \
 -extent 50x50 \
 -format png \
 -path resized \
 *.png

mogrify ImageMagick पैकेज से एक कमांड है। आपको पहले आउटपुट डायरेक्टरी बनानी होगी।


अच्छा है। BTW, यदि आप रोमांच महसूस करते हैं, तो आप -path resizedफ़ाइलों को जगह में संपादित करने के लिए छोड़ सकते हैं ।
अनारकण ६

यह भी खूब रही। मेरे इंस्टॉल (OSX, 1.3.35) पर यह gm mogrifyऔर इसके बजाय -path resized, उपयोग-create-directories -output-directory resized
ब्लेक

1

यहाँ है कि मैं अंततः क्या साथ चला गया। एक दो कदम प्रक्रिया:

gm convert \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
   original.png \
   intermediate.png

gm composite \
  -compose in \
   intermediate.png \
   mask.png \
   out.png

जहां मास्क.पिंग सफेद पिक्सल्स हैं, जो मैं रखना चाहता था, और पारदर्शी पिक्सल्स जो मैं मास्क लगाना चाहता था (त्यागना)।

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