यदि आप अपने रूबी एप्लिकेशन में किसी भी प्रकार की इमेजेज के साथ काम करते हैं, तो एक अच्छा मौका है कि आप उन्हें एक तरह से या किसी अन्य तरीके से बदलना चाहेंगे।
जैसे उन्हें रिसाइज़ करके स्पेस बचाना और अपने उपयोगकर्ताओं के लिए तेज़ डाउनलोड।
लेकिन आप यह कैसे कर सकते हैं?
MiniMagick एक जेम है जो आपकी मदद कर सकता है।
यह ImageMagick प्रोग्राम और आपके रूबी कोड के बीच एक इंटरफेस है।
यह आपकी इमेजेज पर सभी प्रकार के ट्रांसफॉर्मेशन लागू करने में आपकी मदद करता है ताकि उन्हें आपकी आवश्यकताओं के अनुसार अनुकूलित किया जा सके!
सबसे पहले:
आपको अपने ऑपरेटिंग सिस्टम पैकेज मैनेजर का उपयोग करके ImageMagick इंस्टॉल करने की आवश्यकता है, या प्रोजेक्ट की वेबसाइट से इंस्टॉलर डाउनलोड करके।
फिर mini_magick के साथ आप अपनी इमेजेज में बदलाव करने के लिए नियमित रूबी मेथड्स का उपयोग कर सकते हैं।
आइए कुछ उदाहरण देखते हैं!
इमेज खोलना
आप दो तरीकों से इमेज खोल सकते हैं:
MiniMagick::Image.open=> इमेज की कॉपी बनाता हैMiniMagick::Image.new=> मूल इमेज को बदलता है
open मेथड फाइल नाम और URL दोनों लेता है, इसलिए आप वेब से सीधे इमेज खींच सकते हैं।
मैं Unsplash से इस इमेज का उपयोग करने जा रहा हूँ, एक फ्री फोटो शेयरिंग साइट।

आप इमेज को इस तरह लोड कर सकते हैं:
require 'mini_magick' image = MiniMagick::Image.open( "https://images.unsplash.com/photo-1516295615676-7ae4303c1c63" )
अब जब इमेज लोड हो गई है तो आप इसके बारे में जानकारी प्राप्त कर सकते हैं, जैसे इसका आकार, आयाम, फॉर्मेट, आदि।
यहाँ बताया गया है:
image.dimensions # [3963, 5944] image.type # "JPEG" image.human_size # "20.7663MB"
यह एक विशाल इमेज है, तो आइए इसे रिसाइज़ करें!
साथ ही, मैं इसे घुमाना चाहूंगा ताकि यह वर्टिकल के बजाय हॉरिजॉन्टल हो।
रिसाइज़ और रोटेट
आप इमेज को इस तरह रिसाइज़ कर सकते हैं:
image.resize "500x500"
यह आपको सटीक आयाम देता है, लेकिन यदि आप पहलू अनुपात को बरकरार रखते हुए इमेज को प्रतिशत में स्केल करना चाहते हैं...
आप यह कर सकते हैं:
image.resize "25%"
यह मूल आकार के 25% पर रिसाइज़ है, 25% द्वारा रिसाइज़ नहीं।
अब:
आपको फाइल को डिस्क पर वापस लिखकर परिवर्तनों को लागू करने की आवश्यकता है।
यहाँ बताया गया है:
image.write("/tmp/new_image.jpg")
यदि आपने डायरेक्ट मॉडिफिकेशन के लिए इमेज खोली है (new का उपयोग करके, open के बजाय) तो आपको write का उपयोग करने की आवश्यकता नहीं है।
इमेज कैसे क्रॉप करें
आप इमेज के कुछ हिस्सों को क्रॉप कर सकते हैं ताकि उन चीजों को हटाया जा सके जो आप नहीं चाहते और इसे छोटा बना सकें।
सिंटैक्स यह है:
<width> x <height> +<xoffset> +<yoffset>
उदाहरण के लिए, यदि आप इमेज के निचले आधे हिस्से को काटना चाहते हैं:
image.crop "100%x50%+0+0"
इमेज के आधे हिस्से के वर्टिकल क्रॉप के लिए:
image.crop "50%x100%+0+0"
आप इन नंबरों के साथ तब तक खेल सकते हैं जब तक आपको वह क्रॉप न मिल जाए जिसे आप ढूंढ रहे हैं।
राउंडेड इमेज बनाना
यदि आप अपनी इमेज को राउंडेड बनाना चाहते हैं, तो आपको मेथड्स के एक सेट को संयोजित करने की आवश्यकता होगी।
इस तरह:
MiniMagick::Tool::Convert.new do |img| img.size '3900x5000' img << 'xc:transparent' img.fill "apple.jpg" img.draw "translate 2000, 2500 circle 0,0 2000,0" img.trim img << 'circle.png' end
यह दिए गए आकार का एक खाली कैनवास बनाता है, जो उस इमेज का आकार होना चाहिए जिसे आप राउंड करना चाहते हैं।
फिर:
इस कैनवास को इमेज से भरा जाता है, बीच में एक सर्कल खींचा जाता है, और सर्कल के आसपास की हर चीज को हटा दिया जाता है।
अंत में, इमेज को "circle.png" के रूप में सेव किया जाता है।
ध्यान दें कि translate 2000, 2500 कैनवास के बीच के कोऑर्डिनेट्स हैं।
जबकि circle 0,0 2000,0 में 2000 सर्कल की त्रिज्या है।
MiniMagick के साथ बॉर्डर कैसे जोड़ें
mini_magick के साथ बॉर्डर जोड़ना दुनिया की सबसे आसान चीज है।
उदाहरण:
img.border 10
आप रंग को इस तरह सेट कर सकते हैं:
img.bordercolor("white")
write करना न भूलें यदि आप new के बजाय open का उपयोग कर रहे हैं।
इमेज ऑप्टिमाइज़ेशन
इमेजेज को छोटा बनाने के अलावा ऑप्टिमाइज़ किया जा सकता है।
उदाहरण के लिए, आप mini_magick में strip मेथड का उपयोग करके मेटाडेटा हटा सकते हैं।
इस तरह:
image.strip
यदि आप अतिरिक्त ऑप्टिमाइज़ेशन चाहते हैं तो आप image_optim जैसे जेम का उपयोग कर सकते हैं।
इस तरह:
require 'image_optim'
image_optim.optimize_image!('orange.jpg')
वीडियो ट्यूटोरियल देखें
सारांश
आपने mini_magick रूबी जेम का उपयोग करके इमेजेज को बदलना (रोटेट, रिसाइज़, क्रॉप) सीखा!
पढ़ने के लिए धन्यवाद।