Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

PHP में इमेजेस पर टेक्स्ट और शेप को रेंडर करना

by
Difficulty:IntermediateLength:MediumLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

पिछले आर्टिकल में हमने PHP के साथ इमेजेस डाउनलोड करने और मैनिपुलेट करने पर ध्यान केंद्रित किया था। हमने एक इमेज को रोटेट करने, साइज बदलने, स्केल करने या फ्लिप करने का तरीका सीखा। हमने विभिन्न फिल्टर और कन्वॉल्यूशन मैट्रिक्स के बारे में भी सीखा। उन ट्यूटोरियल ने GD लाइब्रेरी के कुछ प्रैक्टिकल उपयोगों को भी कवर किया है जैसे एक डायरेक्टरी में सभी इमेजेस का साइज बदलना या एक साथ कई इमेजस पर वाटरमार्क जोड़ना।

रेगुलर इमेजेस में मैनिपुलेशन की GD का उपयोग करने के अलावा, हम स्क्रैच से अपना स्वयं का भी बना सकते हैं। लाइब्रेरी में विभिन्न फंक्शंस का उपयोग बेसिक शेप्स जैसे एलिपसे, सर्कल, रैक्टेंगल, पोलीगोन, और सिंपल लाइंस बनाने के लिए किया जा सकता है। कुछ गणित के साथ, यह आकार अच्छे पैटर्न बना सकते हैं। दी गई इमेज पर टेक्स्ट ड्रॉ करने के लिए भी फंक्शन उपलब्ध है, जो बहुत सारी संभावनाओं को खोलते हैं।

यह ट्यूटोरियल आपको सिखाएगा की PHP में बेसिक शेप्स को कैसे बनाया जाए और अपने पसंदीदा फॉन्ट का उपयोग करके टेक्स्ट को कैसे रेंडर किया जाए।

PHP में GD के साथ बेसिक शेप को ड्रॉ करें

हम इस सेक्शन में बेसिक शेप्स के बारे में जानेंगे और फिर बाद में लाइन की मोटाई, ब्रश और लाइन स्टाइल्स को कवर करेंगे।

लाइन को ड्रॉ करना

आप imageline($image, $x1, $y1, $x2, $y2, $color) फंक्शन का उपयोग करके दो दिए गए बिंदुओं के बीच एक सिंपल सीधी लाइन ड्रॉ कर सकते हैं। $image पैरामीटर एक इमेज का रिसोर्स है, जो पहले imagecreatetruecolor() या imagecreatefromjpeg() जैसे फंक्शंस का उपयोग करके बनाया गया है। स्क्रैच से नई इमेजेस बनाने के लिए हमें ट्यूटोरियल में imagecreatetruecolor() का उपयोग करेंगे। यदि $y1 $y2 के बराबर है, तो फंक्शन एक हॉरिजॉन्टल लाइन ड्रॉ करेगा। इसी तरह, यह एक वर्टिकल लाइन खींचेगा यदि $x1 $x2 के बराबर हो।

सर्कल्स और आर्क्स को ड्रॉ करें

फंक्शन imagearc($image, $cx, $cy, $width, $height, $start, $end, $color) $cx और $cy का उपयोग करके इसके केंद्र के रूप में गोलाकार आर्क को ड्रॉ कर सकता है। $width और $height पैरामीटर अलग अलग अक्षो पर चाप के आकार को डिटरमाइन करते हैं। $start और $end पैरामीटर डिग्री मे आर्क के शुरुआती और अंत एंगल को निर्दिष्ट करते हैं। यदि आप 0 से 360 डिग्री तक पूर्ण आर्क ड्रॉ करना चाहते हैं, आप वैकल्पिक imageellipse($image, $cx, $cy, $width, $height, $color) फंक्शन का उपयोग कर सकते हैं।

रैक्टेंगल्स और पॉलीगन्स को ड्रॉ करें

आप imagerectangle($image, $x1, $y1, $ x2, $y2, $color) फंक्शन का उपयोग करके एक इमेज पर रेक्टेंगल बना सकते हैं। $x1 और $y1 की वैल्यू रेक्टेंगल के ऊपरी बाएं कोने का निर्धारण करते हैं। $x2 और $y2 वैल्यू नीचे दाएं कोने का निर्धारण करते हैं। ये imagepolygon($image, $points, $num_points, $color) फंक्शन भी है, जो किसी भी संख्या में साइड या प्वाइंट्स के साथ पोलीगोन बना सकता है। $points पैरामीटर एक ऐसा ऐरे है जहां दो एलिमेंट्स को एक विशेष बिंदु के कोऑर्डिनेटर प्राप्त करने के लिए एक रखा जाता है।

एक अन्य फंक्शन जिसे imageopenpolygon() कहा जाता है, PHP 7 में जोड़ा गया है, जो पहले और आखिरी बिंदु के बीच एक रेखा ड्रॉ नहीं करता है।

ड्राइंग बनाने के लिए इसे एक साथ रखना

निम्नलिखित उदाहरण में, हमने इन सभी फंक्शन का उपयोग लाइन की मदद से एक झोपड़ी, सूरज और जमीन की ड्राइंग बनाने के लिए किया है।

यहां महत्वपूर्ण बात यह है अलग अलग कोऑर्डिनेट की वैल्यू का पता लगाना। ओरिजिनल इमेज के आकार के रिलेटिव में सब कुछ ड्रॉ करना चाहता था, इसलिए मैंने अलग-अलग बिंदुओं के कोऑर्डिनेट की कैलकुलेशन करने के लिए $img_height और $img_width वेरिएबल का उपयोग किया।

Line Drawing in PHP GD

लाइन की मोटाई, स्टाइल, और भरने वाले कलर को कंट्रोल करना

ऊपर दी गई इमेज में बहुत पतली लाइनें और रंग ना होने जैसे कुछ मुद्दे हैं। इन सभी मुद्दों को imagesetthickness() और imagefilledrectangle() जैसे फंक्शन का उपयोग करके आसानी से ठीक किया जा सकता है।

लाइन की मोटाई

imagesetthickness($image, $thickness) फंक्शन रैक्टेंगल, पोलीगोनस, आर्क्स, आदि को ड्रॉ करते समय रेंडर की गई लाइनों की मोटाई को निर्धारित करता है। उदाहरण के लिए, $thickness को 5 पर सेट करने पर imagerectangle(), imagearc(), imagepolygon(), आदि की मदद से किसी फिगर को ड्रॉ करेंगे तो यह 5 पिक्सेल मोटी होगी।

फिल हुई शेप ड्रॉ करना

प्रत्येक ड्राइंग फंक्शन में एक फिल कलर वर्जन भी होता है जो उस विशेष शेप को दिए गए रंग से भरता है। उदाहरण के लिए, imagefilledrectangle() दिए गए रंग के साथ ड्रा किए गए रेक्टेंगल को भरेगा।

ब्रश का उपयोग करना

एक बहुत ही उपयोगी GD फंक्शन imagesetbrush($image, $brush) है। इस फंक्शन में $brush पैरामीटर सिर्फ एक और इमेज रिसोर्स है जिसका उपयोग लाइनों को ड्रॉ करने के लिए किया जा सकता है। उदाहरण के लिए, आप अपनी इमेज में अच्छे फूलों वाले पैटर्न को जोड़ने के लिए ब्रश के रूप में फूल की ट्रांसपेरेंट वेक्टर ड्राइंग का उपयोग कर सकते हैं। नीचे दिया गया कोड स्निपेट एक ब्रश के रूप में बादलों की इमेज का प्रयोग करने के लिए लिखा गया था, जब हम एक पॉइंट ड्रॉ करते हैं। यह हमारे आसमान में एक अकेला क्लाउड को जोड़ देगा।

मैंने Pixabay पर इस क्लाउड की इमेज को पाया और इसे हमारे प्रोजेक्ट के लिए उचित साइज तक बढ़ाया।

झोपड़ी की इमेज के लिए पूरा कोड नीचे दिया गया है। हमने केवल हर एक शेप के दो वर्जन जोड़े हैं, एक आउटलाइन ड्रॉ करने के लिए और दूसरा रंग भरने के लिए।

ऊपर दिए गए PHP GD कोड का यह अंतिम परिणाम है।

PHP GD Filled Hut Color

इमेजेस पर टेक्स्ट को रेंडर करना

PHP GD चार अलग-अलग फंक्शंस के साथ आता है ताकि आप या तो कई कैरेक्टर्स या एक होरिजेंटल या वर्टिकल दिशा में केवल एक कैरेक्टर रेंडर कर सके। यह फंक्शन imagechar(), imagecharup(), imagestring(), और imagestringup() है। वे सभी एक सामान 6 पैरामीटर्स को स्वीकार करते हैं, इसलिए हम यहां केवल imagechar() फंक्शन पर चर्चा करेंगे।

imagechar($image, $font, $x, $y, $string, $color) फंक्शन में $font पैरामीटर केवल रेंडर किए गए टेक्स्ट का आकार है। यह केवल 1 से 5 तक इन्टिजर वैल्यू को स्वीकार करता है। $string पैरामीटर वह टेक्स्ट है जिसे आप रेंडर करना चाहते हैं। यदि आप char फंक्शंस के लिए एक मल्टी-कैरेक्टर स्ट्रिंग पास करते हैं, तो इमेज पर केवल पहला कैरेक्टर रेंडर किया जाएगा। imagecharup() और imagestringup() फंक्शंस नीचे से ऊपर तक टेक्स्ट को वर्टिकली रेंडर करेंगे।

जब टेक्स्ट रेंडर करने की बात आती है, तो ऊपर जिन चार फंक्शन की चर्चा की गई है, वह बहुत सीमित है। आप पाएंगे कि सामान्य उपयोग के लिए सबसे बड़ी फोंट साइज वैल्यू बहुत छोटी है। साथ ही, टेक्स्ट केवल होरिजेंटल और वर्टिकल लिखा जा सकता है।

सौभाग्य से, GD में एक imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text) फंक्शन होता है जो टेक्स्ट को आपकी इच्छा अनुसार किसी भी एंगल में रेंडर कर सकता है। $fontfile पैरामीटर का उपयोग TrueType फोंट के पाथ को निर्दिष्ट करने के लिए किया जाता है जिसका आप टेक्स्ट सेंड करने के लिए उपयोग करना चाहते हैं। $x और $y पैरामीटर रेंडर किए गए टेक्स्ट की शुरुआती स्थिति निर्धारित करते हैं।

नीचे दिया उदाहरण इन सभी फंक्शन का उपयोग कुछ अच्छे टेक्स्ट इफ़ेक्ट बनाने के लिए करता है।

जैसा कि आप देख सकते हैं, हमने ओरिजिनल टेक्स्ट शैडो जैसे कुछ इफैक्ट्स को बनाने के लिए एक ही टेक्स्ट को थोड़े अलग-अलग पोजीशन में एक ही फोंट के साथ रेंडर किया है। ध्यान रखने वाली महत्वपूर्ण बात यह है कि किसी टेक्स्ट फंक्शन द्वारा रेंडर किए गए टेक्स्ट ओवरलैप के मामले में नीचे दिए गए टेक्स्ट को पूरी तरह से छिपा देगा। यहां ऊपर दिए गए कोड को चलाने के बाद प्राप्त अंतिम इमेज है।

PHP GD Text

अंतिम विचार

इस ट्यूटोरियल का उद्देश्य PHP में स्क्रैच से बेसिक शेप्स को ड्रॉ करने के लिए आपको अलग-अलग GD अलग अलग फंक्शंस से परिचित कराना था। थोड़े गणित की मदद से, आप इन फंक्शंस का उपयोग अधिक जटिल आकार बनाने में भी कर पाएंगे, जैसे रेगुलर पोलीगोन, राउंडेड रैक्टेंगल्स, आदि।

PHP GD में एक इमेज पर टेक्स्ट रेंडर करने के लिए कुछ बहुत उपयोगी फंक्शंस है। एक अच्छे फोंट का उपयोग यह सुनिश्चित करेगा कि रेंडर किए गए टेक्स्ट को अलग अलग फाइल पाथ से लोड की गई रेगुलर इमेजेस पर रखने पर अजीब नहीं लगेगा।

क्या आपने PHP में कोई और फैंसी टेक्स्ट इफ़ेक्ट बनाया है? कृपया उन्हें कमैंट्स में हमारे साथ शेयर करें।

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.