लेखक न केवल शब्दों के साथ काम करते हैं, वे अक्सर छवियों के साथ भी काम करते हैं। तकनीकी लेखन में तकनीक और प्रक्रियाओं को व्यक्त करने के लिए बहुत सारे स्क्रीनशॉट प्रस्तुत करना शामिल है। विभिन्न प्रकाशन प्लेटफ़ॉर्म्स की छवियों के लिए विभिन्न आवश्यकताएं हो सकती हैं, जैसे छवि प्रारूप या फ़ाइल आकार।
एक IT सलाहकार और सिस्टम इंजीनियर के रूप में, मैंने क्लाइंट डिलिवरेबल्स के रूप में बहुत सारा तकनीकी दस्तावेज़ीकरण लिखा है, आमतौर पर Microsoft Word (.doc) आवश्यक प्रारूप के रूप में। कोई भी दस्तावेज़ सामग्री जुड़ने के साथ तेजी से बढ़ सकता है। शुरुआती दिनों में, स्क्रीनशॉट अक्सर बिटमैप्स (.bmp) होते थे, जिनका फ़ाइल आकार बहुत बड़ा हो सकता है। एक सर्वर पर ऑपरेटिंग सिस्टम की स्थापना का वर्णन करने वाला दस्तावेज़ एक बहुत बड़ी फ़ाइल बन सकता है।
उन्हें अपठनीय बनाए बिना छवियों को छोटा करना एक श्रमसाध्य अभ्यास था। बिटमैप्स को jpeg फ़ाइलों में और बाद में png फ़ाइलों में परिवर्तित किया जा सकता था। जब मैंने अपना ऑफिस सूट LibreOffice पर स्विच किया तब भी संपादन एक चुनौती बना रहा। सौभाग्य से, आज अधिकांश स्क्रीनशॉट टूल्स छोटे प्रारूपों में सेव करते हैं, जैसे png।
Opensource.com लेखों में उपयोग की जाने वाली छवियों पर कुछ सीमाएं लगाता है। मैंने अपने लेखों के लिए छवियों को तैयार करने के लिए एक त्वरित तीन-चरणीय विधि विकसित की। पहला चरण स्टेजिंग के बारे में स्मार्ट होना है, जैसे विंडो का आकार बदलना या फ़ॉन्ट बदलना। दो अतिरिक्त चरण बहुत दोहराव वाले बन गए। वे हैं यह सुनिश्चित करना कि छवि 600-पिक्सेल चौड़ाई सीमा से अधिक न हो और बॉर्डर लागू करना।
prepimg.sh स्क्रिप्ट
मैंने इन कार्यों को संभालने के लिए prepimg.sh नामक एक Bash स्क्रिप्ट लिखी। यह स्क्रिप्ट ImageMagick सूट से दो टूल्स का उपयोग करती है।
छवि का आकार बदलें
स्क्रीनशॉट उपयोगिता छवि को Pictures डायरेक्ट्री में एक सामान्य नाम के साथ सहेजती है—कुछ ऐसा जैसे Screenshot-20210923222312.png। मेरा prepimg.sh स्क्रिप्ट इस डायरेक्ट्री में फ़ाइलों की पिक्सेल चौड़ाई की जांच करता है और किसी भी को जो सीमा से अधिक है उसका आकार बदलता है। यह चरण चौड़ाई (%w) निर्धारित करने के लिए ImageMagick सूट से identify प्रोग्राम का उपयोग करता है।
$ identify -format %w Screenshot-20210903202655.png
1217
चौड़ाई मान को तुलनित्र के रूप में 600 की सीमा के लिए वेरिएबल W को निर्दिष्ट किया जाता है। सीमा स्वयं वेरिएबल $MAXWIDTH के माध्यम से कॉन्फिगरेबल है। यदि चौड़ाई MAXWIDTH से अधिक निर्धारित होती है, तो convert नामक एक अन्य ImageMagick प्रोग्राम को छवि की चौड़ाई कम करने के लिए बुलाया जाता है। यहाँ मेरी स्क्रिप्ट से इमेज प्रोसेसिंग फंक्शन है:
if [ "$W" -gt "$MAXWIDTH" ]
then
[[ $VERBOSE -gt 0 ]] && echo "${1} is ${W} - reducing"
convert -resize "${MAXWIDTH}" \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
...
छवि को आवश्यकतानुसार आकार में कम किया जाता है और $READY वेरिएबल द्वारा परिभाषित एक अलग डायरेक्ट्री में सेव किया जाता है। इस मामले में, छवि वास्तव में थोड़ा छोटी आकार में बदली जाती है—598 पिक्सेल—बॉर्डर के जुड़ने के लिए जगह छोड़ने के लिए, जिसे मैं आगे दिखाता हूं।
छवि में बॉर्डर जोड़ें
कभी-कभी एक छवि वेब पेज के बैकग्राउंड में घुल-मिल सकती है। ऐसा इसलिए है क्योंकि छवि का फोरग्राउंड रंग उसके किनारे तक साइट के बैकग्राउंड के समान रंग का होता है। यहाँ एक उदाहरण है:
Image by:
बिना बॉर्डर वाली छवि। (CC BY-SA 4.0)
जैसा कि आप ऊपर की छवि के साथ देख सकते हैं, छवि का किनारा कहां है यह बताना असंभव है। यह समस्या सफेद रंग तक सीमित नहीं है। यह प्रत्येक व्यक्तिगत साइट और उसके द्वारा उपयोग किए जाने वाले थीम रंगों पर निर्भर करता है। इसलिए, यदि बैकग्राउंड लाल है और छवि का किनारा भी लाल है, तो यही समस्या होती है। मेरी स्क्रिप्ट convert टूल का उपयोग करके इसे हल करती है। -border विकल्प प्रत्येक छवि फ़ाइल में 1 पिक्सेल आकार का बॉर्डर जोड़ता है। यह विकल्प अपने आप में पर्याप्त होता लेकिन मैं -bordercolor विकल्प का उपयोग करके रंग भी सेट करना चाहता हूं। यहाँ एक उदाहरण है:
convert -bordercolor black -border 1 Screenshot-20210903202655.pngनीचे वही छवि बॉर्डर के साथ है। क्या यह बेहतर नहीं दिखती?
Image by:
बॉर्डर वाली छवि। (CC BY-SA 4.0)
आपकी छवि तैयार है
मैं स्क्रीनशॉट डायरेक्ट्री के माध्यम से पुनरावृति करने के लिए एक for लूप का उपयोग करता हूं। यह प्रत्येक फ़ाइल के लिए process_img फंक्शन को कॉल करता है। फंक्शन चौड़ाई और बॉर्डर दोनों को संभालता है। पूरा कोड कुछ सनिटी चेकिंग करता है जैसे यह सुनिश्चित करना कि फ़ाइल वास्तव में एक छवि है।
process_img() {
# verify that file is an image file, and then get dimensions
if file "${SCREENSHOTS}"/"${1}" | grep -qE 'image|bitmap'; then
[[ $VERBOSE -gt 0 ]] && echo "${1} is an image"
W=$(identify -format %w "${SCREENSHOTS}"/"${1}")
else
echo "File ${SCREENSHOTS}/${1} is not an image."
W=0
fi
# resize and border
if [ "$W" -gt "$MAXWIDTH" ]
then
[[ $VERBOSE -gt 0 ]] && echo "${1} is ${W} - reducing"
convert -resize "${MAXWIDTH}" \
-bordercolor $BORDER \
-border 1 \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
else
convert -bordercolor $BORDER \
-border 1 \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
fi
}स्क्रिप्ट का अंतिम चरण प्रोसेस्ड फ़ाइलों को Ready, नामक एक सब-डायरेक्ट्री में सेव करना है, जिसे $READY नामक वेरिएबल द्वारा निर्धारित किया जाता है। यह मूल फ़ाइलों को आगे के उपयोग के लिए संरक्षित करता है।
उपयोग
Prepimg.sh में इसके आर्गुमेंट्स और उनके उपयोग का वर्णन करने वाली अपेक्षित हेल्प सुविधा शामिल है:
$ prepimg.sh -h
prepimg.sh Version 0.7 - written by Alan Formy-Duval
prepimg.sh [OPTIONS]
--verbose, -v वर्बोज़ बनें
--directory, -d स्क्रीनशॉट डायरेक्ट्री (डिफ़ॉल्ट: /home/alan/Pictures/Screenshots)
--ready, -r रेडी डायरेक्ट्री (डिफ़ॉल्ट: /home/alan/Pictures/Screenshots/Ready)
--border, -b बॉर्डर रंग (डिफ़ॉल्ट: black)
कोड और निष्कर्ष
लेख में प्रस्तुत कोड अधूरा है और इसे छद्म कोड माना जाना चाहिए। आप मेरे Git रिपॉजिटरी में पूरी स्क्रिप्ट देख सकते हैं।
ImageMagick सूट छवियों में हेरफेर करने के लिए टूल्स का एक शक्तिशाली सेट है। आप मेरे छोटे से स्क्रिप्ट में शामिल फंक्शन्स के अलावा कई और चीजें कर सकते हैं। संवाददाता Jim Hall ने भी हाल ही में इसका उपयोग करके छवि का आकार बदलने के बारे में लिखा था।
चाहे आप Bash स्क्रिप्टिंग पसंद करें या C या Python जैसी किसी अन्य भाषा में कोडिंग, ऑटोमेशन एक बड़ी मदद है। बार-बार, मैंने देखा है कि कैसे थोड़ा सा कोड इतने सारे सिरदर्द को कम कर सकता है और हमें अपने समय का बेहतर उपयोग करने की अनुमति दे सकता है।